stm32 pwm實現過程
阿新 • • 發佈:2019-02-12
如果要從某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脈衝輸出的過程中隨時改變,從而可以用來控制電機的速度。