1. 程式人生 > >stm32 pwm實現過程

stm32 pwm實現過程

如果要從某IO埠輸出PWM脈衝,相應的工作如下:

1.需要一個定時器實現週期迴圈計數

2.設定每個迴圈週期的比較值,從而實現佔空比

3.配置某個IO口味定時器的PWM複用功能

例如:實現STM32 的 GPIOB_5 管腳輸出PWM脈衝:

(stm32的定時器都有4個通道,PWM有4種模式,主要區別在於高低電平變化的時刻不同)

1.查詢晶片手冊,GPIOB_5 的複用功能對應定時器3的通道二

2.設定GPIOB_5 埠為複用推輓輸出功能

3.設定定時器3的對應的GPIO複用重對映,即可以將定時器的4個通道,通過對映方式設定到不同的io管腳,這裡選擇部分對映後,通道二就對映到了GPIOB_5 管腳

4.設定定時器3工作在過載向上計數功能,可以設定一個過載預裝值

5.設定PWM的工作模式和極性

6.然後將定時器3的通道2初始化設定的PWM模式

7.啟動定時器3

8.PWM脈衝高低電平的輸出取決於TIMx_ARR和TIMx_CCRx

TIMx_ARR就是定時器3的重灌值,定時器3會從0開始計數到重灌值後,又從0開始計數,如此反覆。而這個計數週期是作為PWM脈衝的頻率週期。

也就是在此計數週期內實現一個PWM脈衝週期。例如定時器3重灌值=8,即8個定時器脈衝實現從0計數到8.而這8個定時器週期詳單與1個pwm脈衝週期,如4個定時器週期是高電平,4個定時器週期為低電平。其中的4由TIMx_CCRx決定。


9.PWM脈衝週期計算

比如:定時器3的時鐘頻率 為 72MHZ, 重灌值為:8, 則PWM的脈衝頻率為 72/8 = 9MHZ

TIMx_CCRx決定佔空比,可以在PWM脈衝輸出的過程中隨時改變,從而可以用來控制電機的速度。