聊聊一个关于TIMER事件触发中断的响应话题

描述

 

这里有个关于TIMER事件触发中断的响应话题,我们一起聊聊。

情况是这样的,现在使用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。见下图示意。闪电箭头表示发生比较事件。

PWM输出

而中心对齐计数模式2只有在向上计数过程中发生计数器与CCR值匹配时才产生比较事件并可以触发中断或DMA。见下图示意。闪电箭头表示发生比较事件。

PWM输出

中心对齐计数模式3则在向上和向下计数过程中发生计数器与CCR值匹配时都可以产生比较事件并触发中断或DMA。见下图示意。闪电箭头表示发生比较事件。

PWM输出

第二,这里提到RCR=3和单脉冲模式。意味着从启动开始到计数停止。计数器刚好工作2个完整的计数周期,因为RCR=3对应4次计数溢出,4次溢出后产生更新事件并停止计数。

PWM输出

显然,这里结合第一点的提醒,我们不难得出可能发生的比较事件及相应中断响应次数的情况。不过,我这里还有第3点提醒。

第三,条件里说CCR在0~ARR范围变动,我们有必要对CCR=0和CCR=ARR时情况结合不同中心对齐计数模式来考虑。

第四,条件里对ARR和CCR的值并未具体说明,中断响应持续时间也未明确出来,这些会不会增加其它可能性呢?

那么以你的理解,结合开篇的条件和上面提醒,你认为可能出现哪些情形呢?即基于TIMER比较事件可能发生几次中断响应?或者说可能进入几次比较中断服务程序?



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分