比方系统时钟是72mhz,timer的预分频系数prescaler为36000-1,时钟分频clockdivision为0,period为200,占空比pulse为20,现做如下计算:Timer输入时钟频率为72000000/(prescaler+1)=72000000/(36000-1+1)=2000hz,即timer每秒计数2000次,则计数一次需要时间1/2000秒,则pwm的周期为(period)200*(1/2000)s=1/10s=0.1s(由此亦可得pwm频率pwm_freq=1/period),高电平持续时间为占空比(pulse)20*(1/2000)s=1/100s=0.01s,pwm的频率为:pwm_freq=Timer输入时钟频率/ period =2000/200=10hz,pwm的频率由period决定。由此可得pwm频率的计算公式可写为:pwm_freq=timer输入时钟频率/(period+1)*(prescaler+1),查阅了许多资料,基本上都是这么说的,而且经过分析,确实也是这样的。但是在timer作如下配置的时候,计算公式我就看不懂了,如图1箭头所示处,不清楚的是为什么要多除以一个2呢?另外:TIM1_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2; //for dead time clock 延时该句的作用到底是什么?下面这这一句呢?有什么作用?会影响pwm的频率的计算方法吗?TIM1_TimeBaseStructure.TIM_RepetitionCounter = REP_RATE;//重复计数器,设置,用于自动重新跪求高手解答!!
|