写一个stm32定时器中断
时间: 2023-05-23 11:04:07 浏览: 73
timer--interupt-STM32.rar_stm32 定时_stm32 定时器中断_stm32_timer
的代码。
以下是一个基本的stm32定时器中断的代码:
```
#include "stm32f4xx.h"
void TIM2_IRQHandler(void) {
TIM2->SR &= ~TIM_SR_UIF; // 清除中断标志位
// 在这里添加自己的逻辑
}
void TIM_Config(void) {
TIM_TimeBaseInitTypeDef timerInitStructure;
NVIC_InitTypeDef nvicStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseStructInit(&timerInitStructure);
timerInitStructure.TIM_Prescaler = 1000; // 预分频系数
timerInitStructure.TIM_Period = 5000; // 计数器计数上限
timerInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分频
timerInitStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式
TIM_TimeBaseInit(TIM2, &timerInitStructure);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // 开启中断
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 使用4位抢占式优先级
nvicStructure.NVIC_IRQChannel = TIM2_IRQn;
nvicStructure.NVIC_IRQChannelPreemptionPriority = 9;
nvicStructure.NVIC_IRQChannelSubPriority = 0;
nvicStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvicStructure);
TIM_Cmd(TIM2, ENABLE); // 开始计数
}
int main(void) {
TIM_Config();
while (1) {
// 在这里添加自己的逻辑
}
}
```
阅读全文