请教:如何使用一个定时器实现多路频率可调PWM(占空比不要求可调)?

2019-07-21 08:07发布

本帖最后由 bootblack 于 2018-10-31 13:46 编辑

如题,由于硬件上仅剩余一个硬件定时器(通用定时器),需要实现如下功能:
1、实现5路PWM
2、每路PWM频率都可调整(各路PWM频率都是独立的)
3、占空比没有要求,一般保持50%左右即可
4、每路频率都低于10KHz
5、要求频率误差小于等于1Hz

额,想请教下各路大神,有没有很好的思路,敬请指教!感谢!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
十0二
1楼-- · 2019-07-22 16:48
bootblack 发表于 2018-10-31 20:03
额,非常感谢阁下
不过,我看你的程序,似乎这个改变的是各个通道的占空比,并不能独立改变各个通道的PW ...

频率可以改的 你看一下相关的源码就知道了 花不了几分钟就能明白 或者你也可以去看相关的开发指南和技术手册 上面讲的很清楚 我的这个 在这里配置的就是周期和预分频值
TIM_TimeBaseStructure.TIM_Period = 999; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
        TIM_TimeBaseStructure.TIM_Prescaler =0; //设置用来作为TIMx时钟频率除数的预分
然后有了这两个就能确定频率了  假设我的时钟源是72mhz
那么频率=72000000/(999+1)=72KHZ
  而这个我一般都设为0       TIM_TimeBaseStructure.TIM_Prescaler =0;
但是我这是F1的代码 你如果用的是msp430那我就不清楚我说的这些可不可以帮到你了 因为我不了解你的板子。
正点原子
2楼-- · 2019-07-22 17:21
硬件只能4路。要输出5路,那就是在定时器中断里面,对IO取反了。。。
Electronic
3楼-- · 2019-07-22 18:34
 精彩回答 2  元偷偷看……
bootblack
4楼-- · 2019-07-22 19:49
感谢各位指教!
只是有人没有get到重点。
1、我要求每路通道频率单独可调,占空比不要求可调!
2、我目前已经实现,但是需要使用中断(最理想的方式是不用进入中断,这样根本就不占用CPU!)
再次感谢各位!
Electronic
5楼-- · 2019-07-23 01:27
bootblack 发表于 2018-11-8 17:15
感谢各位指教!
只是有人没有get到重点。
1、我要求每路通道频率单独可调,占空比不要求可调!

我的代码就是频率可调啊,占空比固定是50%
bootblack
6楼-- · 2019-07-23 07:14
Electronic 发表于 2018-11-8 17:35
我的代码就是频率可调啊,占空比固定是50%

有空我试试,最近需要有点忙。

感谢兄台,到时候过来汇报使用感受!

再次感谢兄台指教!

一周热门 更多>