定时器中断

功能介绍

定时器中断是 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 配置

// 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);
    }