求助 pwm输出频率低于100HZ无波形

2019-07-20 15:21发布

原子哥,我pwm输出当频率高于100hz时是有用的,但是低于100hz时就输出不了,请问为什么呢?
TIM3_PWM_Init(40000-1,21-1);        //84M/21=4Mhz的计数频率,重装载值1000,所以PWM频率为 4M/40000=100  hz.
TIM_SetCompare1(TIM3,20000);        //修改比较值,修改占空比
这样输出是有用的
但是
TIM3_PWM_Init(400000-1,21-1);        //84M/21=4Mhz的计数频率,重装载值1000,所以PWM频率为 4M/400000=10  hz.
TIM_SetCompare1(TIM3,200000);        //修改比较值,修改占空比

这样输出是很诡异的568hz
但是
TIM3_PWM_Init(200000-1,21-1);        //84M/21=4Mhz的计数频率,重装载值1000,所以PWM频率为 4M/200000=20  hz.
TIM_SetCompare1(TIM3,100000);        //修改比较值,修改占空比

这样输出是没有波形的,求助。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
szczyb1314
1楼-- · 2019-07-20 19:51
TIM3_PWM_Init(200000-1,21-1);        变量是u16类型的,你的200000超范围了
TIM_SetCompare1(TIM3,100000);        一样的超范围了
faiz
2楼-- · 2019-07-20 20:26
 精彩回答 2  元偷偷看……
szczyb1314
3楼-- · 2019-07-20 21:54
faiz 发表于 2017-4-12 09:45
多谢回复,昨晚躺在床上我也想到了,还真是这个原因。不过还有一个很奇怪的地方,我在探索者板子上这样设 ...

探索者F4的PWM初始化是U32类型的,没超范围
faiz
4楼-- · 2019-07-21 02:31
szczyb1314 发表于 2017-4-12 09:49
探索者F4的PWM初始化是U32类型的,没超范围

我也是初始化u32类型的,我翻到寄存器里看,arr寄存器是16位的
szczyb1314
5楼-- · 2019-07-21 07:27
 精彩回答 2  元偷偷看……
faiz
6楼-- · 2019-07-21 10:48
szczyb1314 发表于 2017-4-12 10:51
还真的是,定义跟说明不符

哈哈 对的吧……所以很奇怪我的探索者怎么就出来了
难道是因为我用的芯片是stm32f407VGT6而探索者是ZGT6?

一周热门 更多>