单脉冲模式,如何解决脉冲迟滞?

2019-07-21 02:51发布

如题。

还好只是前期测试。
发现,STM32的单脉冲模式,居然不是为所欲为的。。

我期望的是,使能定时器后,即刻输出一个脉宽可调的脉冲。

但实际可行的配置结果都是,使能定时器后,延迟一定时间,才会输出脉冲。延迟时间与配置方法和ARR、CRR的数值有关。

一开始芯片选用的时候没当回事,想当然觉得有这功能就能用。昨天开发板到了,调程序也是随便设置一下,用示波器看一眼。
本来心想排列组合试也能试出来,结果搞了一下午,愣是都不对。

问题原因,我倒是大致明白,就是找不到解决办法。感觉需要硬件功能的支持才行。
经过测试确定的是:
1.更新必须要有的。没有更新事件,OPM的设置就无效,定时器会一直运行。
2.更新,会自动重装定时器。
3.坏就坏在这个定时器重装上,如果我设置成启动定时器就输出脉冲,重装后条件就会致使OC1REF=1
假设可能的方法:
4.如果,能够设置只产生更新,但不重装定时器。CNT停止在TOP,那也行。
5.或者,产生更新后,OPM生效,CEN=0,定时器停止,同时定时器重装。但!OC1REF保持为定时器重装前的值。

好在要输出的脉宽最大几个uS,程序在设置好脉冲宽度后,启动定时器,最多也是延时几个微秒后,才有脉冲发送。
对于电路不是无法承受。
但这个设计,强迫症很难接受。
真不行只能加比较匹配中断,自己关定时器了,就是怕中断响应慢了。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。