STM32CubeMX—PWM波輸出實驗

定時器PWM波實驗

  • 實驗說明

芯片:STM32F103RCT6

實驗內容:使用定時器2的通道1輸出PWM波控制LED燈的亮度。

  • 實驗操作

  • 1、基礎配置

 1)sys中,選好調試方式,例如jtag-4pin。

 2)RCC時鐘,晶振選擇。

 3)時鐘樹配置。

 4)中斷分組配置。

            以上步驟可以參考之前的實驗。

     2、外設配置—PWM波配置

             本次實驗使用的是TIM2的通道1來輸出PWM波。

          1) 如下圖打開TIM2功能配置視圖。

          2)選擇時鐘,並且選擇通道1的PWM模式。

 

      

 

    注意載芯片示意圖上 會看到下圖  PA0 就是TIM2 的通道1 PWM波輸出口。

                           

 

     3)配置PWM波的參數

     

    上圖中需要理解兩個點,

     PWM 的頻率 :

                                                        

     PWM模式和極性: 

        PWM模式1,在向上計數時,一旦TIMx_CNT < TIMx_CCR1(就是上圖中的6,計數比較值)。時通道1爲有效電平,否則爲無效電平;在向下計數時,一旦TIMx_CNT>TIMx_CCR1時通道1爲無效電平(OC1REF=0),否則爲有效電平(OC1REF=1)。

PWM模式2- 在向上計數時,一旦TIMx_CNT < TIMx_CCR1時通道1爲無效電平,否則爲有效電平;在向下計數時,一旦TIMx_CNT > TIMx_CCR1時通道1爲有效電平,否則爲無效電平

 輸出比較極性的指的是你在比較匹配之後輸出口輸出的極性。 這個函數就是讓你設置有效極性,也就是設置比較輸出的有效電平。你可以設置爲高電平有效或者低電平有效。如果設置爲高電平有效,那麼當定時器比較匹配之後,輸出口輸出高電平,否則就反一下。

       這裏我自己的理解是,如果是PWM模式1,且向上計數,如果極性設置爲低,那麼 TIMx_CNT < TIMx_CCR1 時,輸出低電平,更簡單就是佔空比爲1 – TIMx_CCR1/(ARR+1). 如果極性爲高,佔空比就是TIMx_CCR1/(ARR+1)。

4)、生成代碼

        由於這裏不用中斷,所以不用配置中斷優先級。所以寫好工程的名字和路徑後,直接生成代碼即可。

5)在工程中開啓PWM

        在完成以上設置之後,我們需要使能 TIM2 並且使能 TIM2_CH1 輸出。在 HAL 庫中,函數 HAL_TIM_PWM_Start 可以用來實現這兩個功能,函數聲明如下:

                        HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);

 該函數第二個入口參數 Channel 是用來設置要使能的通道號。

             

 

6)、修改佔空比

推薦使用寄存器的方式

                                  TIMx->CCRx = NUM;   (x爲數字。 NUM 爲一個數字 範圍0 - ARR)

7)、測試

下載程序,然後可以使用萬用表測試PA0口的電壓值,爲0.54~0.55V

 

(PWM模式1,極性爲高 所以佔空比爲 150/900 * 3.3 爲0.55V。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章