发新帖我要提问
12
返回列表
打印
[STM32F1]

精确控制PWM输出数量

[复制链接]
楼主: yufe
手机看帖
扫描二维码
随时随地手机跟帖
21
yufe|  楼主 | 2017-4-28 22:29 | 只看该作者 回帖奖励 |倒序浏览
貌似方法不错哎 尝试下

使用特权

评论回复
22
zhuww| | 2017-4-28 22:30 | 只看该作者
TIM模块本身就是定时器,每一次PWM更新中断不就是PWM输出的数量嘛,你要想控制输出个数,在PWM更新中断里技术就好了啊,同时也可以改变PWM比较器翻转值更改频率,几条代码执行一下,时间很短。

使用特权

评论回复
23
zhanglli| | 2017-4-28 22:33 | 只看该作者

每次进中断以后,可以改变定时器的初值来改变中断间隔嘛,进一次改一次。就可以实现频率改变啦。
用一个变量来记录中断次数。

使用特权

评论回复
24
lium| | 2017-4-28 22:34 | 只看该作者
楼主实现了吗。

使用特权

评论回复
25
hanwe| | 2017-4-28 22:35 | 只看该作者
启动DMA传输,103很方便的实现,通过DMA发送占空比数据,改变PWM的占空比,DMA传输完毕进中断,

使用特权

评论回复
26
llia| | 2017-4-28 22:37 | 只看该作者
PWM脉冲的数量也就统计到了,500KHz没什么问题。注意DMA传输完毕进中断时,最后一个PWM还没有发完,切换为单脉冲模式,PWM就停止了。407还有些bug,修正后和103一样用。

使用特权

评论回复
27
langgq| | 2017-4-28 22:40 | 只看该作者
楼主,请教一下,用DMA的话,可以实现多少路的输出?

使用特权

评论回复
28
wangzsa| | 2017-4-28 22:41 | 只看该作者
整一个数在定时器中断减,减的快慢控制一下不就是加减速吗

使用特权

评论回复
29
wangzsa| | 2017-4-28 22:42 | 只看该作者
基本思路:
步进电机加速曲线一般算好各步的频率、步数,生成数组:
{脉宽1, 步数1, 脉宽2, 步数2, 。。 脉宽N, 步数N}
启动DMA,用TIM的Update触发,源地址为脉宽1,地址固定,数量为步数2,目标地址为TIM的ARR,开DMA中断。在DMA完成中断里设置下一步的参数,直到全部完成。
以上只更新了ARR改频率,没更新CCRx保证占空比50%,看一下manual里TIMx_DCR、TIMx_DMAR寄存器介绍以及后面的Example of how to use the DMA burst feature。

使用特权

评论回复
30
yufe|  楼主 | 2017-4-28 22:44 | 只看该作者
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
31
421846130| | 2017-10-9 14:40 | 只看该作者
书已经看完,是一本科普类的书,需要入门的可以一看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则