[STM32F1] STM32怎么实现精确控制PWM输出数量同时能改变频率?

[复制链接]
icecut 发表于 2015-2-2 12:34 | 显示全部楼层
pwm触发dma,dma触发更新pwm的值.找找实现方式
 楼主| lnhaing 发表于 2015-2-2 13:50 | 显示全部楼层
icecut 发表于 2015-2-2 12:34
pwm触发dma,dma触发更新pwm的值.找找实现方式

多谢! 正在研究
 楼主| lnhaing 发表于 2015-2-2 13:52 | 显示全部楼层
wallace_tsou 发表于 2015-2-2 11:52
#include "core_cm3.h"

#include "FreeRTOS.h"

非常感谢  我先参考下 谢谢:kiss::kiss:
wallace_tsou 发表于 2015-2-2 14:35 | 显示全部楼层
using TIM_RepetitionCounter can control output number.
cddxcdx 发表于 2015-2-2 14:54 | 显示全部楼层
精确计算脉冲数的话可以通过在定时器中断里直接翻转IO的方式,频率就是改变定时器中断的周期
 楼主| lnhaing 发表于 2015-2-2 15:29 | 显示全部楼层
cddxcdx 发表于 2015-2-2 14:54
精确计算脉冲数的话可以通过在定时器中断里直接翻转IO的方式,频率就是改变定时器中断的周期 ...

你试过吗:lol 我都打算试下各种方法
cddxcdx 发表于 2015-2-2 16:13 | 显示全部楼层
lnhaing 发表于 2015-2-2 15:29
你试过吗 我都打算试下各种方法

就做了计数输出,因为速度较慢没有做加减速
81190865 发表于 2015-2-2 16:21 | 显示全部楼层
定时器同步功能实现脉冲计数,开启影子寄存器和缓冲功能,实现实时改变频率
 楼主| lnhaing 发表于 2015-2-2 16:26 | 显示全部楼层
81190865 发表于 2015-2-2 16:21
定时器同步功能实现脉冲计数,开启影子寄存器和缓冲功能,实现实时改变频率 ...

貌似方法不错哎 尝试下
hzlaliugang 发表于 2015-2-2 16:36 | 显示全部楼层
TIM模块本身就是定时器,每一次PWM更新中断不就是PWM输出的数量嘛,你要想控制输出个数,在PWM更新中断里技术就好了啊,同时也可以改变PWM比较器翻转值更改频率,几条代码执行一下,时间很短。
lnulibin 发表于 2015-2-2 16:42 | 显示全部楼层
每次进中断以后,可以改变定时器的初值来改变中断间隔嘛,进一次改一次。就可以实现频率改变啦。
用一个变量来记录中断次数。
81190865 发表于 2015-2-6 13:50 | 显示全部楼层
本帖最后由 81190865 于 2015-2-6 13:51 编辑

楼主实现了吗。
zzwj5120 发表于 2015-3-1 11:28 | 显示全部楼层
lnhaing 发表于 2015-2-1 19:55
能不能说下思路,代码我自己研究  非常 谢谢!

启动DMA传输,103很方便的实现,通过DMA发送占空比数据,改变PWM的占空比,DMA传输完毕进中断,
PWM脉冲的数量也就统计到了,500KHz没什么问题。注意DMA传输完毕进中断时,最后一个PWM还没有发完,切换为单脉冲模式,PWM就停止了。407还有些bug,修正后和103一样用。
疯狂程序员 发表于 2015-3-1 17:23 | 显示全部楼层
zzwj5120 发表于 2015-3-1 11:28
启动DMA传输,103很方便的实现,通过DMA发送占空比数据,改变PWM的占空比,DMA传输完毕进中断,
PWM脉冲 ...

楼主,请教一下,用DMA的话,可以实现多少路的输出?
gonggu8181 发表于 2015-3-2 07:26 来自手机 | 显示全部楼层
整一个数在定时器中断减,减的快慢控制一下不就是加减速吗
wowow 发表于 2015-3-2 13:40 | 显示全部楼层
基本思路:
步进电机加速曲线一般算好各步的频率、步数,生成数组:
{脉宽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。
天罡星lmy 发表于 2015-12-29 22:13 | 显示全部楼层
学习一下
JorryZhao 发表于 2017-10-26 12:44 | 显示全部楼层
谢谢各位,学习了!!
JorryZhao 发表于 2017-10-26 12:53 | 显示全部楼层
wowow 发表于 2015-3-2 13:40
基本思路:
步进电机加速曲线一般算好各步的频率、步数,生成数组:
{脉宽1, 步数1, 脉宽2, 步数2, 。。 脉 ...

很好,非常感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部