OpenEdv-开源电子网

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

新思路同一定时器产生不同频率的PWM

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-11-20
在线时间
4 小时
发表于 2017-11-20 16:24:54 | 显示全部楼层 |阅读模式
最近项目使用了8个步进电机,单片机是STM32L1,定时器用了2,3,4。由于每个步进电机都需要独立控制,所以采用了4988.通过PWM控制。要求每个每个步进电机能控制方向和速度。方向好说,但是同一个定时器产生不同频率这就是麻烦事了,查了论坛说可以配置成输出比较模式,但个人从未配置过,尝试下无果。然后想出了可以采用PWM模式改变频率的办法,思路其实也很简单,开始定时器,配置成PWM2或者PWM1模式,并且开启溢出中断,关键就在于PWM模式开启溢出中断,就可以知道PWM脉冲个数,解决办法就是在中断里面设定一个静态变量p=0,让其自加,到设定值之后就归零,关键步骤来了,根据需要判断p的值,设定PWM的占空比为零,p为其他值时候占空比恢复一开始设定的。举例说明:

开启了定时器3通道1和2,PWM频率配置成1KHZ。
如果用了上面讲的方法,在定时器溢出中断时候p=1-p;若p为1,则把占空比设为0,TIM_SetComparex(TIM3,0);
在下一次中断来临时p为0,判断p,设定p=0时,占空比恢复正常TIM_SetComparex(TIM3,正常占空比)
那么这样就产生了1KHz,500Hz的方波。
方法缺点呢就是很明显了,占空比只能为50%,25%,12.5%...当然,项目控制的是步进电机,脉冲与占空比关联性小,自然就实现了调速。调速还是比较鸡肋的。。。。。用示波器测试,实验证明完全可行。
仅提供下思路,大神勿喷。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-11-20
在线时间
4 小时
 楼主| 发表于 2017-11-20 16:29:39 | 显示全部楼层
“占空比只能为50%,25%,12.5%”,这句话应该说错了,占空比完全可以任意
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-26 19:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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