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

基于STM32定时器中的2个问题

[复制链接]
yumeii 发布时间:2019-12-31 15:57
问题1:在使用STM32通用或高级定时器的比较输出时,如果采用中心对齐计数模式做PWM输出,并使用比较事件作为ADC的触发启动。那么,在一个完整的计数周期内,可能发生2次比较事件,想知道如何确定使用哪次比较事件进行触发呢?换句话说,是否可以对比较事件进行选择配置?答案是肯定的。


下图是采样中央对齐计数模式,PWM mode 1的PWM输出情形。ARR=8,CCR=4.


1.png


在上面的应用情况下,比较事件可能发生在CNT与CCR第一次匹配时,即发生在向上计数阶段,也可能发生在CNT与CCR第二次匹配时,即发生在向下计数阶段。到底发生在哪个阶段,取决于相关控制寄存器的配置,这里跟寄存器TIMx_CR1中CMS控制位有关。


2.png


3.png


从该寄存器CMS控制位的描述不难看出,在计数器使用中心对齐计数模式做比较输出时,比较事件的发生是可以选择的。可以仅仅发生在向上计数阶段或向下计数阶段,也可以配置为上下两个计数阶段都产生比较事件。这点可以结合上面图形的箭头提示加以认知和理解。【CcxIF为相应通道的比较事件标志位】


问题2:有人反馈,在定时器的溢出中断里打断点时,发现更新中断标志无法被清零,可用户在中断服务程序中实实在在的有对更新事件标志实施清零操作。


其实,并不是没法对更新事件标志清零,这只是种误解。原因是尽管此时客户在清零操作后的代码处打上了断点,但由于定时器并没有停止计数,如果再加上溢出周期较短。程序刚做完清除操作并停止在定时器中断服务程序断点后,由于定时器还在持续计数而产生新的溢出更新事件,令更新事件标志再次被置位,这样给人以更新事件标志没法被清零的错觉。


对于调试状态下定时器的计数动作是可以软件配置选择的,即当程序运行到断点后,定时器是继续计数还是暂停下来可用户软件配置决定,【这里的定时器不仅仅指常规定时器,还包括看门狗】。


4.png


5.png


具体到上面案例,如果希望在断点处计数器暂时不要计数,我们可以软件上做相应配置。这里涉及到寄存器DBGMCU_CR,让相关定时器在调试状态遇到断点时暂停计数。


6.png


7.png


收藏 1 评论3 发布时间:2019-12-31 15:57

举报

3个回答
feixiang20 回答时间:2019-12-31 23:58:59
支持好分享
czhstm 回答时间:2020-1-1 17:58:40
还没有试过
Kevin_G 回答时间:2020-1-2 10:03:56
支持好分享

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版