OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5134|回复: 4

两个定时器级联(主从模式)发固定PWM脉冲数实现步进电机角度可调

[复制链接]

25

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2016-8-23
在线时间
74 小时
发表于 2020-12-19 20:55:02 | 显示全部楼层 |阅读模式
20金钱
如题,目前能想到的是用中断的方式去做,这是一个方法,但是个人觉得并不是太好的,目前想做的是用定时器级联的方式去搞,看了一些资料,但是还是有些地方不是十分清楚主定时器CUBE配置发PWM脉冲,更新事件中断,  从定时器该怎么去设置呢?  有做过的吗?

最佳答案

查看完整内容[请看2#楼]

经过对定时器部分静下心来仔细分析,实现了主从定时器方式发固定脉冲个数控制电机的方式,很多东西其实不难,只是我们太马虎
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2016-8-23
在线时间
74 小时
 楼主| 发表于 2020-12-19 20:55:03 | 显示全部楼层
经过对定时器部分静下心来仔细分析,实现了主从定时器方式发固定脉冲个数控制电机的方式,很多东西其实不难,只是我们太马虎

motor_OK主从方式.zip

9.96 MB, 下载次数: 465

回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2020-12-20 09:41:45 | 显示全部楼层
做过类似的。给你提供一个思路

你要用两个定时器,假设为定时器A和定时器B。

定时器A用于产生PWM,并需要额外配置:
1. 设置CR2寄存器,主模式工作时,把Update事件作为TRGO输出信号送出去(即PWM每过一个周期发出一次TRGO,用于给定时器B计数);
2. 设置SMCR寄存器,从模式工作时,选择触发源为ITRx(B定时器的TRGO),从模式选择为Reset Mode或Gated Mode,即TRGI一来信号就复位或停止。

定时器B用于PWM脉冲计数,并设定计到一定数之后反过来触发定时器A勒令其停止:
1. 设置CR2寄存器,主模式工作时,把Compare Pulse事件作为TRGO输出信号送出去(即一旦计数到CC1通道就发出一次TRGO,用于给定时器A停车信号,因此想要发出多少PWM脉冲数就设置CC1的数值即可);
2. 设置SMCR寄存器,从模式工作时,选择触发源为ITRx(A定时器的TRGO),从模式选择为External Clock Mode 1,即TRGI一来信号就计数一次。

坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2020-12-21 10:53:29 | 显示全部楼层
做定时器驱动WS2812时候遇到过PWM波形输出个数过多的问题,因为用的是内存开辟数组直接DMA到定时器的方式,所以在数组两端添加了几个空值,实现了确定波形个数的数据发送。
不过步进电机步数值巨大可能不能采用这个方式。
回复

使用道具 举报

25

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2016-8-23
在线时间
74 小时
 楼主| 发表于 2020-12-22 16:04:48 | 显示全部楼层
xkwy 发表于 2020-12-20 09:41
做过类似的。给你提供一个思路

你要用两个定时器,假设为定时器A和定时器B。

用的F407单片机   CUBE配置了TIM3为主定时器   TIM4为从定时器    测试结果是一直在发PWM脉冲  并不能按照自己的设置发固定个数

motor.zip

9.21 MB, 下载次数: 38

回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 10:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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