核心区别在于触发源和用途:更新中断(UEV)在计数器溢出(向上/向下计数到边界)或软件触发时产生,代表一个完整计数周期结束,常用于定时器周期任务(如1ms调度)。比较中断(CCxIF)在计数器值等于预装载的比较寄存器(CCRx)时触发,用于精确控制输出波形(PWM占空比)或捕获外部信号。实操中,若用PWM输出,必须用比较中断(或DMA)来更新占空比,用更新中断会导致输出毛刺。若做多路延时,可共用更新中断基准,用比较中断做精确时间点。注意:更新中断会受预装载(ARPE)影响,若开启自动重装载,更新事件在重装载后发生;比较中断需注意CCxP位极性设置。代码示例:
```c
// 更新中断:周期任务
void TIM2_IRQHandler(void) {
if (TIM_GetITStatus(TIM2, TIM_IT_Update)) {
// 1ms周期处理
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}
// 比较中断:精确触发
void TIM3_IRQHandler(void) {
if (TIM_GetITStatus(TIM3, TIM_IT_CC1)) {
// 在CCR1值处触发
TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
}
}
```
mcuku 阿沐 · 2026-08-18