[STM32F1] STM32F103产生数量可控的脉冲

[复制链接]
6304|23
 楼主| yygkqzh 发表于 2014-3-31 17:54 | 显示全部楼层 |阅读模式
最近在写一个STM32控制步进电机的程序。

看过不少资料,方法各种各样。但是我做的比较特殊,频率100K左右,共做6路,而且6路脉冲频率独立可调。
有很多人建议IO口翻转,但是经过实验,频率不能达到预想的结果。
频率独立可调,就是得使用不同的定时器,TIM1~TIM5和TIM8。

求助各位大神 and 香主!!!

评论

楼主,请问问题解决没,最近也遇到了和您类似的问题  发表于 2023-5-6 10:00
 楼主| yygkqzh 发表于 2014-4-1 10:52 | 显示全部楼层
不能沉了啊
_编程浪子 发表于 2014-4-1 11:57 | 显示全部楼层
频率也是独立的话  好像只能一个定时器一路了。
ST库的例程中好像有一个是用同一个定时器产生不同频率的,但比较麻烦  局限也多。
 楼主| yygkqzh 发表于 2014-4-1 16:13 | 显示全部楼层
_编程浪子 发表于 2014-4-1 11:57
频率也是独立的话  好像只能一个定时器一路了。
ST库的例程中好像有一个是用同一个定时器产生不同频率的, ...

使用一个定时器产生1路脉冲,当到达需要的频率时,第六路PWM没有输出,是不是速度不能太快???
mmuuss586 发表于 2014-4-1 17:04 | 显示全部楼层

加减速的算法,挺占时间的。
另外6路同步的话有点困难
_编程浪子 发表于 2014-4-1 18:26 | 显示全部楼层
yygkqzh 发表于 2014-4-1 16:13
使用一个定时器产生1路脉冲,当到达需要的频率时,第六路PWM没有输出,是不是速度不能太快???
...

我没用过  只做过几个实验
不能乱给意见:lol
 楼主| yygkqzh 发表于 2014-4-1 20:35 | 显示全部楼层
mmuuss586 发表于 2014-4-1 17:04
加减速的算法,挺占时间的。
另外6路同步的话有点困难

我暂时还不需要加减速的算法,只是单纯的生成脉冲。
这个能不能实现呢?
 楼主| yygkqzh 发表于 2014-4-1 20:36 | 显示全部楼层
_编程浪子 发表于 2014-4-1 18:26
我没用过  只做过几个实验
不能乱给意见

那您最多几个定时器同时工作呢?
_编程浪子 发表于 2014-4-2 09:09 | 显示全部楼层
yygkqzh 发表于 2014-4-1 20:36
那您最多几个定时器同时工作呢?

好像是四路   当初出来波形之后,用示波器测了下就没继续了
香水城 发表于 2014-4-2 11:39 | 显示全部楼层
mmuuss586 发表于 2014-4-1 17:04
加减速的算法,挺占时间的。
另外6路同步的话有点困难

可以用2个定时器,一个4路一个2路信号。

置于两个定时器的同步,可以考虑用timer的主从模式
 楼主| yygkqzh 发表于 2014-4-2 15:41 | 显示全部楼层
香水城 发表于 2014-4-2 11:39
可以用2个定时器,一个4路一个2路信号。

置于两个定时器的同步,可以考虑用timer的主从模式 ...

香主,你好。
使用两个定时器能不能产生6路频率不同的PWM呢?
 楼主| yygkqzh 发表于 2014-4-3 19:08 | 显示全部楼层
怎么没人说话了?
yuanquanquan 发表于 2014-4-3 21:30 | 显示全部楼层
帮顶!学习!楼主加油!
香水城 发表于 2014-4-8 16:32 | 显示全部楼层
yygkqzh 发表于 2014-4-2 15:41
香主,你好。
使用两个定时器能不能产生6路频率不同的PWM呢?

如果使用timer的PWM1或PWM2模式,因为每个timer只有一个ARR,是不能做到一个timer输出4路不同频率的PWM波的。但是如果使用Toggle模式,则每个通道的OCx可以随时改变,被CPU或被DMA。这样输出的每一路波形就是完全可控的。当然这个模式下,就没有像PWM模式那么方便,配置好以后,一旦使能就硬件输出预先设置好频率和占空比的PWM了。

Picture1.png
huzi2099 发表于 2014-4-8 20:13 | 显示全部楼层
步进电机的控制不需要每一路都独立调整频率吧,至少一台电机的2或3相是同一个频率呀
290399937 发表于 2014-4-9 07:21 来自手机 | 显示全部楼层
systick 定时器中断里做6个变量i1,i2,i3,....自减!if到0软件重赋值该变量!并翻转对应io口……
比如40M的cpu  ……systick 重装值100……这样i1=1;最快做到每400k一次翻转!就是200k.的脉冲!要多慢看你i1的值
liuts 发表于 2014-4-9 08:43 | 显示全部楼层
我有成熟的步进电机控制方案,已经大量使用,带加减速。缓停,急停 QQ 125096005
 楼主| yygkqzh 发表于 2014-4-9 16:23 | 显示全部楼层
huzi2099 发表于 2014-4-8 20:13
步进电机的控制不需要每一路都独立调整频率吧,至少一台电机的2或3相是同一个频率呀 ...

虽说不需要,但是能够独立调节岂不是更好?
 楼主| yygkqzh 发表于 2014-4-9 16:24 | 显示全部楼层
290399937 发表于 2014-4-9 07:21
systick 定时器中断里做6个变量i1,i2,i3,....自减!if到0软件重赋值该变量!并翻转对应io口……
比如40M的c ...

如果这样,那岂不是只能时时进入中断,没有办法干其他事情了?
 楼主| yygkqzh 发表于 2014-4-9 16:27 | 显示全部楼层
香水城 发表于 2014-4-8 16:32
如果使用timer的PWM1或PWM2模式,因为每个timer只有一个ARR,是不能做到一个timer输出4路不同频率的PWM波 ...

这个例程我试过了,频率不能太高的,否则波形不是很好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

33

帖子

0

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