PWM发脉冲,怎么精确控制发脉冲的个数呢?

2019-07-21 09:01发布

STM32的PWM发送脉冲,周期和脉宽都可调了,但是现在不知道如何精确的控制所发的脉冲个数。
具体要求就是在一段时间内大概50ms内发送5000-1W个脉冲  个数要很精确,误差2个以内可以接受
该怎么控制呢?
1.接上一个外部中断口,在中断中计数
2.用一个定时器 对发脉冲的时间进行控制

各位大侠还有什么好的办法吗?求解啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
lff1987
1楼-- · 2019-07-25 12:13
 精彩回答 2  元偷偷看……
Jerry_9527
2楼-- · 2019-07-25 13:05
lff1987 发表于 2016-3-10 22:42
听说还有用DMA的。

DMA的,在意法半导体,设计资源专区就有,我感觉数据量不大,用DMA效果不是很明显.
我用的是一个TIM1输出3路PWM,之后用一个TIM2互为主从,之后切换TIM1的TRGO信号,选择不同的OCxREF作为触发!
xkwy
3楼-- · 2019-07-25 16:47
坟贴了,


查了一下,咋没人提到TIM1->RCR?

高级定时器(TIM1、TIM8)有个RCR寄存器,可以完美解决问题。

正常情况下是CNT每溢出一次就产生一次中断,
但是有了RCR之后,是每溢出RCR次才进一次中断,
再配合TIM->CR1[OPM],有奇效,


所以,使用高级定时器,可以和容易解决。

网上也有类似的帖子,控制脉冲数的
Jerry_9527
4楼-- · 2019-07-25 20:40
整鼓猩 发表于 2015-12-29 11:08
我的方法一次最多是65535个

突然发现没法搞一个脉冲, 因为定时器的ARR不能输入0, 真是蛋疼啊,呵呵~
Jerry_9527
5楼-- · 2019-07-26 02:22
xkwy 发表于 2016-3-11 12:52
坟贴了,

重复计数器,是可以实现,但是有局限性啊,那个重复计数器才8位,
如果配置定时器环, STM32F4的话, TIM1作为TIM2的预分频, 可以实现
单次2^32 + 2^16个脉冲个数, 2^16是TIM2的prescaler.
TIM2是32位计数器!
网布
6楼-- · 2019-07-26 04:59
 精彩回答 2  元偷偷看……

一周热门 更多>