Tout = ((arr+1)*(psc+1))/Tclk ;
其中:
Tclk:定时器的输入时钟频率(单位MHZ)
Tout:定时器溢出时间(单位为us)
TIM_Period = arr; eg:4999
TIM_Prescaler = psc; eg:7199
Tout = ((4999+1)×(7199+1))/72 = 500000us = 500ms
有些小白可能看这么多也不知道是什么意思
具体一点的解释:
Tclk:定时器的输入时钟频率为 72 000 000HZ
TIM_Prescaler = 7199;那么72 000 000/7200 = 10000HZ = 10KHZ;
也就是说要计数10000才是1s。
TIM_Period = 10000/2 - 1 = 4999;所以 500ms要计算5000次,才是0.5s;
修改输出PWM的频率和占空比
pwm频率 f = 时钟频率/(arr + 1 )* (psc + 1); 单位: Khz
pwm周期 T = 1/ f ; 单位 : s
PWM_Init_TIM1(0,7199); // PWM频率 f = 72000000/(7199+1)*(0+1) = 10KHZ
// PWM周期 T = 1/f = 1/10000 = 0.0001S = 0.1ms
TIM_SetCompare1(TIM1,3599);//设置TIMx捕获比较1寄存器值 此处为TIM1通道1 占空比为50%
TIM_SetCompare4(TIM1,3599);//设置TIMx捕获比较4寄存器值 此处为TIM1通道4 占空比为50%
1993

被折叠的 条评论
为什么被折叠?



