stm32pwm如何精确控制频率?

2019-07-25 11:34发布

现在需要做一个可以控制pwm频率的程序,要求是频率从1Khz开始每隔10ms频率增加1hz,一直增加到500Khz,如何才能实现呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
网络孤客
1楼-- · 2019-07-25 12:53
本帖最后由 网络孤客 于 2017-11-10 17:28 编辑
追月 发表于 2017-11-10 17:16
我现在就是这样,但是到了高频就会跳变的很厉害,比如说直接从60Khz变化到66Khz

你的pscr和arr值是怎样计算的?
绝对精确肯定做不到,但近似是可以的。

如果1Hz变化,72M频率也够呛。
72M / 60Khz = 1200 (pscr*arr=1200)
72M / 60.001Khz = 1999.98 (pscr*arr=1200)
一样的频率

aiyeba
2楼-- · 2019-07-25 16:54
PWM的频率是预分频pscr和arr决定的,你每隔10ms就改变一下他们就可以了。

可以设置   计数器1khz    主要是每次10ms   arr++;
追月
3楼-- · 2019-07-25 18:52
aiyeba 发表于 2017-11-10 15:56
PWM的频率是预分频pscr和arr决定的,你每隔10ms就改变一下他们就可以了。

可以设置   计数器1khz    主 ...

我现在就是这样,但是到了高频就会跳变的很厉害,比如说直接从60Khz变化到66Khz
正点原子
4楼-- · 2019-07-25 22:28
stm32的分频,无法让你精确到1hz步进的。智能做近似处理。有时候会差别很大。
追月
5楼-- · 2019-07-26 04:24
 精彩回答 2  元偷偷看……
追月
6楼-- · 2019-07-26 05:23
在理论计算中,每次加1hz需要给分频数赋小数,但是分频数必须为无符号整数,有没有别的处理方法,来实现频率的改变呢

一周热门 更多>