QUESTION1.用stm32写了个简单的pwm波输出程序,仿真发现输出的频率为设置的一半,查看了设置的值没问题
TIM2_PWM_Init(7199,0);
频率=72000000/((psc+1)*(arr+1))
结果波形为:
周期为0.2ms,即频率为5000Hz,差了一半
**解决方法:**后面无意间去翻SystemInit();文件,发现我用的之前别人的工程模板,里面的默认频率设置为36MHz
注释掉36MHz那一行,把72MHz那一行取消注释,再输出波形正常了,周期为10ms,即频率10KHZ
结果:
QUESTION2:设定的定时器3输出50HZ方波,但是用keil仿真出的方波频率是74HZ左右的;
Motor_PWM_Init(19999,71); //初始化定时器输出方波频率50HZ
while(1)
{
TIM_SetCompare1(TIM3,3000); //输出通道1波形
TIM_SetCompare2(TIM3,3000);
TIM_SetCompare3(TIM3,3000);
TIM_SetCompare4(TIM3,3000);
}
仿真图形如下,频率为74HZ左右:
查看SystemInit()里面的配置也是正确的;
解决方法:查看MDK软件里面的外部晶振频率设置是否正确?
看了看我的stm32外部晶振是8MHz的,将其改为8MHz再次仿真:
结果正确: