stm32中pwm頻率和佔空比設定
阿新 • • 發佈:2019-02-02
對於72M頻率來說,計算pwm頻率是:
頻率:
//Fpwm = 72M / ((arr+1)*(psc+1))(單位:Hz)
佔空比:
//duty circle = TIM3->CCR1 / arr(單位:%)
這樣每次改變頻率和佔空比都要手動算一下,非常不方便。
下面進行改進:
//PWM輸出初始化 //arr:自動重灌值 //psc:時鐘預分頻數 void set_pwm1(u32 arr,u16 psc) { double T_ARR,DPwm_CCR2; T_ARR=(double)72000000/arr; DPwm_CCR2=(double)(T_ARR * psc)/10000; T_ARR=T_ARR+0.5;//四捨五入演算法 DPwm_CCR2=DPwm_CCR2+0.5;//四捨五入演算法 // PWM_Config_step((u16)T_ARR, (u16)DPwm_CCR2, 1); PWM_Period = (u16)T_ARR; TIM1->CCR1 =DPwm_CCR2; }
使用:set_pwm1(20000,1000);這樣就是20KHZ,10%
使用:set_pwm1(80000,5000);這樣就是80KHZ,50%
以此列推。。。