硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2862|回复: 8
收起左侧

[有问必答] 关于STM32定时器发送脉冲

[复制链接]

3

主题

6

回帖

15

积分

新手上路

积分
15
发表于 2021-2-22 11:10:42 | 显示全部楼层 |阅读模式
关于STM32定时器发送脉冲,STM32如何才能同时发送4路不同频率,不同数目的脉冲呢?我用定时器+DMA这种方法控制4个步进电机时,第一个电机和第四个电机之间还是有时间间隔,跑个2分钟位置就乱了,做不到同步啊
223.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2021-2-22 11:37:20 | 显示全部楼层
你当前的是TIM CCR配合DMA吗,不如用TIM UP配合DMA,这样可以控制任意IO,然后DMA双缓冲随时更新数值即可。这样仅需一个TIM,一个DMA即可同步控制16路输出。

当然,最简单还是定时器中断

STM32-V4开发板的步进电机例程,5V 4相 5线步进电机 28YBJ-48
http://www.armbbs.cn/forum.php?m ... 7742&fromuid=58
(出处: 硬汉嵌入式论坛)


回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2021-2-23 09:01:45 | 显示全部楼层
eric2013 发表于 2021-2-22 11:37
你当前的是TIM CCR配合DMA吗,不如用TIM UP配合DMA,这样可以控制任意IO,然后DMA双缓冲随时更新数值即可。 ...

我用4个定时器做不到同步输出PWM,坛主你说的是用1个定时器的4个通道实现吗?
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2021-2-23 09:02:49 | 显示全部楼层
eric2013 发表于 2021-2-22 11:37
你当前的是TIM CCR配合DMA吗,不如用TIM UP配合DMA,这样可以控制任意IO,然后DMA双缓冲随时更新数值即可。 ...

你那有相关的例程能参考吗?感谢大佬的回复了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2021-2-23 10:01:44 | 显示全部楼层
上善若水001 发表于 2021-2-23 09:01
我用4个定时器做不到同步输出PWM,坛主你说的是用1个定时器的4个通道实现吗?

对,一个定时器的UP更新事件配合DMA
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2021-2-23 10:02:00 | 显示全部楼层
上善若水001 发表于 2021-2-23 09:02
你那有相关的例程能参考吗?感谢大佬的回复了

F1的没,H7做了。你可以参考
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980


QQ截图20210223095808.png

回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2021-2-24 09:52:32 | 显示全部楼层
eric2013 发表于 2021-2-23 10:02
F1的没,H7做了。你可以参考
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

好的,感谢坛主老哥的指点了。淘宝上的 硬汉DSP28335 开发板也是你家店里的吗?DSP有个ePWM功能,貌似可以同步输出PWM波,这个有PDF的教程文档吗?
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2021-2-25 10:09:13 | 显示全部楼层
eric2013 发表于 2021-2-23 10:02
F1的没,H7做了。你可以参考
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

坛主老哥,能不能用操作系统的方式来实现STM32同时发送不同频率不同数目的脉冲?发送函数为图片上的  ,比如 任务1 发送 200hz,100个脉冲,任务2 发送 500hz,100个脉冲。那肯定是任务2先完成,然后等待任务1完成,然后再同时启动,完成下一组脉冲数。其中最重要的是多个任务同时启动,先完成的等待后完成的,这种 方法作为我的备用选项,不知道使用操作系统能不能实现上述的要求?如果可以的话老哥你能给个大概的实现思路吗?比如操作系统中要使用哪几个函数来实现这个 先完成的任务等待后完成的,然后再同时启动 完成下一组脉冲?还有就是rtx 容易实现这个,还是ucos 容易实现?

226.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2021-2-25 10:59:39 | 显示全部楼层
上善若水001 发表于 2021-2-25 10:09
坛主老哥,能不能用操作系统的方式来实现STM32同时发送不同频率不同数目的脉冲?发送函数为图片上的  , ...

这种的最好一个任务里面完成,没必要弄到多个任务里面,无谓的增加设计的复杂性
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 00:54 , Processed in 0.294176 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表