查看原文
其他

利用STM32定时器输出指定脉冲个数的一种方法

茶话MCU 2022-09-11


我们在做嵌入式产品的开发过程中,有时需要输出指定数目的脉冲。实现它的方法较多,这里介绍一种利用STM32定时器的单脉冲模式来实现的方法。


STM32定时器的单脉冲输出功能,其实是定时器输出比较功能的一个特殊应用。即让定时器在某个事件触发后的一段时间产生指定脉宽的单脉冲信号。


计数器的启动通常可由从模式控制器控制,可由比较输出模式或PWM输出模式来产生波形。通过置位OPM@TIMx_CR1来在下一个更新事件时关闭计数器来实现单脉冲输出。



STM32定时器里有个重复计数器TIMx_RCR,当它的值是个非0值N时,计数器不再每次溢出【上溢或下溢】时都产生更新事件,而是当发生第N+1次溢出时才产生更新事件。如果RCR=0的话,就是每次溢出都产生更新事件。

那么,当把单脉冲输出模式与RCR寄存器配合使用时,就不难生成指定数目的脉冲个数。此时脉冲个数为TIMx_RCR的值加1。


在上面原理的基础上,通过使用STM32定时器的主从模式还可以方便地实现周期性地输出指定数目的脉冲。


假如按上图所示,TIM2与TIM1主从连接,实现周期性的输出5个脉冲。

TIM2 配置为主 触发模式,触发TIM1的计数;

TIMER1 配置为从 单脉冲输出模式;TIM1_RCR=4;




关于上述内容的更多细节可以点击左下方的”阅读原文”去下载AN4776,相关应用的参考固件代码,可以去 搜索X-CUBE-TIMCOOKER下载。整个固件包解压后的工程目录如下所示,其中就有上面提到的两种应用的参考工程代码。


===================================

往期链接:

1、一个UART通信奇偶校验出错位的读取话题

2、话说STM32的PCROP代码保护功能

3、一个跟STM32中断优先级有关的话题

4、单片机开发不可错过的一个视频资料库

5、聊聊STM32芯片的DFU编程及相关话题


扫描或长按二维码可关注公众号

 


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存