当你用stm8 TIM1输出PWM时,如果你要改变PWM的频率(周期),那么你当你从低频向高频转换时,你会发现PWM有一段时间不输出了,特别是分频较大时会认为没输出了,问题更难找。向我这个项目的例子:16MHZ时钟分频成4ms计数一次。有效电平占空比:TIM1_CCR1H = 0x00,TIM1_CCR1L = 0x7c,不变,当从TIM1_ARRH = 0x09,TIM1_ARRL = 0x3C,改变为 TIM1_ARRH= 0x00,TIM1_ARRL = 0xF9,时PWM输出完全停止。因为CNT计数器已经走过了小周期的溢出位置,需要重新计满65535再走到0x7C才可以有需出但是按我这个项目计数算要4多分钟才能重新输出。找了我半天的时间才找到问题。希望能对做同样功能时遇到同样问题没发现的朋友们有帮助。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
楼主有没有试过改频率时直接重置计数器的,
//*******重置 定时器 清除定时器 写入新的计数值**************/
void TIM1_CoutReset( u16 TIM1_CoutVout )
{
TIM1_CNTRH = 0;//计数清零
TIM1_CNTRL = 0;
TIM1_ARRH = (u8)(TIM1_CoutVout>>8);
TIM1_ARRL = (u8) TIM1_CoutVout;
}
一周热门 更多>