1. 程式人生 > >stm32中pwm頻率和佔空比設定

stm32中pwm頻率和佔空比設定

對於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%

以此列推。。。