你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32定时器应用中的2个疑问

[复制链接]
STMCU小助手 发布时间:2021-1-29 10:34
stm32定时器应用中的2个疑问
9 P+ U. P' u8 u2 E! ^
疑问1:在使用STM32通用或高级定时器的比较输出时,如果采用中心对齐计数模式做PWM输出,并使用比较事件作为ADC的触发启动。那么,在一个完整的计数周期内,可能发生2次比较事件,想知道如何确定使用哪次比较事件进行触发呢?换句话说,是否可以对比较事件进行选择配置?答案是肯定的。
" K, Q! ?4 Y8 S6 V" f
下图是采样中央对齐计数模式,PWM mode 1的PWM输出情形。ARR=8,CCR=4.
5.1.jpg
' z2 U8 G; A2 m. p2 J* S
在上面的应用情况下,比较事件可能发生在CNT与CCR第一次匹配时,即发生在向上计数阶段,也可能发生在CNT与CCR第二次匹配时,即发生在向下计数阶段。到底发生在哪个阶段,取决于相关控制寄存器的配置,这里跟寄存器TIMx_CR1中CMS控制位有关。
  R% P9 ?) j& B( V0 F8 d
5.2.png
5.3.jpg

0 I$ o5 o+ t  K7 E+ \
从该寄存器CMS控制位的描述不难看出,在计数器使用中心对齐计数模式做比较输出时,比较事件的发生是可以选择的。可以仅仅发生在向上计数阶段或向下计数阶段,也可以配置为上下两个计数阶段都产生比较事件。这点可以结合上面图形的箭头提示加以认知和理解。【CcxIF为相应通道的比较事件标志位】
( d6 H2 y0 Z" \2 k) H3 }
疑问2:有人反馈,在定时器的溢出中断里打断点时,发现更新中断标志无法被清零,可用户在中断服务程序中实实在在的有对更新事件标志实施清零操作。
. p; u7 j+ K; i- Z/ ^8 f
其实,并不是没法对更新事件标志清零,这只是种误解。原因是尽管此时客户在清零操作后的代码处打上了断点,但由于定时器并没有停止计数,如果再加上溢出周期较短。程序刚做完清除操作并停止在定时器中断服务程序断点后,由于定时器还在持续计数而产生新的溢出更新事件,令更新事件标志再次被置位,这样给人以更新事件标志没法被清零的错觉。

& Y# U2 {% ?! @
对于调试状态下定时器的计数动作是可以软件配置选择的,即当程序运行到断点后,定时器是继续计数还是暂停下来可用户软件配置决定,【这里的定时器不仅仅指常规定时器,还包括看门狗】。
, _5 v& M# n# f) M9 [8 c
5.4.jpg
5.5.jpg

5 U' ]! p& {3 C% `
具体到上面案例,如果希望在断点处计数器暂时不要计数,我们可以软件上做相应配置。这里涉及到寄存器DBGMCU_CR,让相关定时器在调试状态遇到断点时暂停计数。
( ]3 z8 |6 }2 z4 C' A! f
5.6.jpg
5.7.png

$ b; a7 k2 K0 w8 B7 r" N3 V' d
文章出处: 茶话MCU
& j( S. i: K: x5 v  V! P

- @; Q- T' i9 v
赞 收藏 评论0 发布时间:2021-1-29 10:34

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版