情况是这样的,现在使用STM32G4系列的TIM8,工作在中心对齐计数,单脉冲PWM模式,使用内部系统时钟做时钟源,计数时不做分频,即PSC=0。CH1做PWM输出。
启动时计数器从0开始计数,与RCR对应的计数器值为3。请问在0~ARR范围内调整CCR1的值时,整个工作周期内进入基于比较事件的中断响应次数可能是下面哪些选项?
A:1 B:2 C:3 D:4 E:0
要回答上面问题,我们需厘清或注意几个小细节。
第一,这里只说采用中心对齐计数模式,实际上STM32 TIMER的中心对齐计数有三种模式,其模式1只有在向下计数过程中发生计数器与CCR值匹配时才产生比较事件并可以触发中断或DMA。见下图示意。闪电箭头表示发生比较事件。
而中心对齐计数模式2只有在向上计数过程中发生计数器与CCR值匹配时才产生比较事件并可以触发中断或DMA。见下图示意。闪电箭头表示发生比较事件。
中心对齐计数模式3则在向上和向下计数过程中发生计数器与CCR值匹配时都可以产生比较事件并触发中断或DMA。见下图示意。闪电箭头表示发生比较事件。
第二,这里提到RCR=3和单脉冲模式。意味着从启动开始到计数停止。计数器刚好工作2个完整的计数周期,因为RCR=3对应4次计数溢出,4次溢出后产生更新事件并停止计数。
显然,这里结合第一点的提醒,我们不难得出可能发生的比较事件及相应中断响应次数的情况。不过,我这里还有第3点提醒。
第三,条件里说CCR在0~ARR范围变动,我们有必要对CCR=0和CCR=ARR时情况结合不同中心对齐计数模式来考虑。
第四,条件里对ARR和CCR的值并未具体说明,中断响应持续时间也未明确出来,这些会不会增加其它可能性呢?
那么以你的理解,结合开篇的条件和上面提醒,你认为可能出现哪些情形呢?即基于TIMER比较事件可能发生几次中断响应?或者说可能进入几次比较中断服务程序?