定时器中断

功能介绍

定时器中断是 STM32 中最基本的中断源之一。当定时器计数器溢出(达到自动重装载值 ARR)时,硬件自动置位更新标志位 UIF,并触发中断请求。NVIC 中断控制器根据优先级配置决定是否响应此中断。

定时器中断广泛用于:LED 闪烁、按键消抖、周期性数据采集、系统时钟节拍、通信超时检测等场景。通过配置不同的 PSC 和 ARR 值,可以实现从微秒到小时级的精确定时。

启动定时器中断

C
1 

中断回调函数

C
1void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
2 if (htim->Instance == TIM6) {
3 // 定时器溢出处理
4 HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
5 }

中断优先级配置

NVIC 配置

C
1// Configuration -> NVIC -> TIM6 global interrupt
2// Preemption Priority: 1

应用示例

LED 闪烁

C
1// TIM_CLK = 170MHz
2// PSC = 17000-1, ARR = 10000-1
3 
4void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
5 if (htim->Instance == TIM6) {
6 HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
7 }