stm8S208的主频率fcpu=16MHZ ,也就是1秒钟执行16M条指令。如果输出PWM脉冲频率为100KHZ左右,也就是1/100K=10us执行一次update中断,那么在这个中断里只能执行10us*16M/s=10*10^(-6)*16*(10^3)*(10^3)=160条指令。是不是有点少了,在中断里和在中断之间直接最多只能执行160条指令。实在是满足不了程序需要。所以把PWM脉冲频率设置应合理,否则会导致死机。 ARR_VALUE数值设定:计数器频率,是CPU经过分频器之后的频率,作为产生PWM脉冲频率的输入频率。假设从0计数到N之后,又从0开始计算。设定PWM脉冲的输出比较值为N/2,那么当计数器数值小于N/2时,输出低电平;大于等于N/2时,输出高电平。那么计数器的N个周期对应1个PWM脉冲周期。 设定计数器频率为f ,PWM脉冲频率为fpulse ,ARR_VALUE=f /fpulse 。 |
更多回帖