定时器中断
功能介绍
定时器中断是 STM32 中最基本的中断源之一。当定时器计数器溢出(达到自动重装载值 ARR)时,硬件自动置位更新标志位 UIF,并触发中断请求。NVIC 中断控制器根据优先级配置决定是否响应此中断。
定时器中断广泛用于:LED 闪烁、按键消抖、周期性数据采集、系统时钟节拍、通信超时检测等场景。通过配置不同的 PSC 和 ARR 值,可以实现从微秒到小时级的精确定时。
启动定时器中断
中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM6) {
// 定时器溢出处理
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
}中断优先级配置
NVIC 配置
- 抢占优先级:0-15,数值越小优先级越高
- 子优先级:0-15
- 高优先级可打断低优先级
// Configuration -> NVIC -> TIM6 global interrupt
// Preemption Priority: 1应用示例
LED 闪烁
// TIM_CLK = 170MHz
// PSC = 17000-1, ARR = 10000-1
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM6) {
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
}