定时器:中央对齐模式剖析
中央对齐模式(Center-Aligned Mode)下,当配置为 模式3(CMS[1:0] = 11) 时,定时器会同时触发 上溢中断(ARR中断) 和 下溢中断(0中断),即一个PWM周期内会有 两次更新中断。以下是关键总结:
✅ 中央对齐模式3的中断行为
中断类型 | 触发条件 | 计数器动作 | 中断标志 |
---|---|---|---|
上溢中断 | 计数器达到 ARR (最大值) | 递增 → 递减 | UIF (更新中断标志) |
下溢中断 | 计数器达到 0 (最小值) | 递减 → 递增 | UIF (更新中断标志) |
结果:
每个PWM周期触发两次更新中断,分别对应计数器在三角波的波峰(ARR)和波谷(0)。
⚠️ 关键配置
-
模式选择:
TIMx->CR1 |= TIM_CR1_CMS; // CMS[1:0]=11 (模式3)
-
模式1/2:仅单次中断(上溢或下溢)。
-
模式3:双次中断(上溢+下溢)。
-
-
中断使能:
需同时开启更新中断:TIMx->DIER |= TIM_DIER_UIE; // 使能更新中断
🔄 中断服务函数(ISR)处理
在中断函数中需:
-
检查中断标志:
if (TIMx->SR & TIM_SR_UIF) { // 检查更新中断标志// 处理逻辑 }
-
区分上下溢:
通过计数方向标志TIMx_CR1.DIR
判断当前状态:if (TIMx->CR1 & TIM_CR1_DIR) { // DIR=1: 递减阶段 → 触发下溢中断 (计数器到0) } else {// DIR=0: 递增阶段 → 触发上溢中断 (计数器到ARR) }
-
清除标志位:
TIMx->SR &= ~TIM_SR_UIF; // 清除中断标志
📊 应用场景
需求 | 推荐模式 | 中断次数 |
---|---|---|
需要精确控制PWM对称性 | 模式3 | 2次/周期 |
降低CPU中断负载 | 模式1或2 | 1次/周期 |
实时更新PWM占空比 | 模式3 | 双时机同步 |
💡 重要提醒
-
中断频率翻倍:
若PWM频率为10kHz,模式3的中断频率为 20kHz,需确保ISR执行时间足够短。 -
占空比更新时机:
在 上溢中断(ARR) 中更新占空比(CCRx
),可确保下一周期生效,避免脉冲断裂。 -
硬件资源消耗:
双中断模式会显著增加CPU负载,在复杂系统中需评估性能瓶颈。