请问STM32怎么输出精确PWM脉冲数?

2019-07-14 13:42发布

在驱动伺服或步进电机的时候,都需要用精确的PWM脉冲数。并且PWM的频率都还挺高,一般100kHz,还可能是多路同时工作,比如驱动4个伺服。
大体看到有两种做法可以实现精确的脉冲数:1,外部再弄个IO口接到PWM脚上,用外部中断的办法,单独来计数。此办法可行,但非常不科学,并且浪费资源。   2,使用定时器,使用一个和PWM频率一致的定时器,使用定时器中断来计数。此方法比第一种办法好了很多,但是仍然感觉比较笨。
STM32的定时器寄存器中有一个重复次数寄存器RCR。   这个寄存器在定时器中可以使用,个人想,若这个重复次数能做到PWM的重复次数计数该多好?
请问大伙,这个能实现吗?或者有不用每个脉冲中断一次的办法实现PWM的精确计数吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
ureuswerwr
1楼-- · 2019-07-15 09:06
楼主,你好!
请问你实现了吗?
我也急用这个方法,而且最好是一个定时器控制一路,因为我需要6路脉冲。
xi9632
2楼-- · 2019-07-15 12:22
 精彩回答 2  元偷偷看……
sdgsgsgs
3楼-- · 2019-07-15 12:33
雨小了111 发表于 2019-3-13 19:40
可以选择使用DMA来控制发送的脉冲数,最大可以65535个。如果你的脉冲宽度一致,则DMA地址不增加的方式传输;如果你想使用不同频率,可以设置不同的装载值,PWM使用单次触发。如果你发送的脉冲数超过65535个,则可以使用DMA传输完成中断中切换DMA传输的数据起始地址及发送数量,继续发送。这个方法即方便,又减轻CPU的负担, ...

谢谢~,请问实现过吗?
小龙虾米
4楼-- · 2019-07-15 16:13
关注中!!!
xi9632
5楼-- · 2019-07-15 18:35
lanziji 发表于 2019-3-13 19:02
本帖最后由 王建 于 2014-12-17 13:13 编辑

我测试用STM32F103C8发出两路PWM,一路200KHz,另外一路150KHz,这两路频率都是固定的,同时以位置控制的模式(精确个数脉冲)驱动两个伺服电机,还带有USB通讯,没有什么问题。要搞六路的话,还得看资料,换资源多的芯片,六路有点多。DMA方式输出,控制机器人最少8路PWM输出, ...

你是怎么实现控制PWM个数的呢?
youxi8745
6楼-- · 2019-07-16 00:24
学习学习,不太懂

一周热门 更多>