您現在的位置是:首頁 > 棋牌

STM32:利用定時器的PWM輸出

  • 由 毛豬說技術 發表于 棋牌
  • 2022-06-07
簡介4、TIMx_CCMR12捕獲 比較模式暫存器:OCxM設定PWM模式1或2(110111)5、TIMx_CCR1~4捕獲比較暫存器:與CNT比較,決定輸出高低電平,控制佔空比

stm32定時器怎麼設定時間

STM32:利用定時器的PWM輸出

PWM,Pulse Width Modulation,即脈衝寬度調製,就是利用定時器的計數功能實現對模擬輸出的控制,可以產生週期和佔空比可調的訊號輸出。連續輸出的話就會產生方波,週期由自動重灌載值ARR(TIMx_ARR)決定,佔空比由捕獲/比較暫存器(TIMx_CCR1~4)值決定。除了基本定時器TIM6、TIM7,其他定時器(通用、高階)都有PWM輸出功能。

STM32:利用定時器的PWM輸出

在介紹如果進行脈寬調製之前,先介紹幾個重要的暫存器:

1、TIMx_CNT定時器計數器:儲存了當前定時器的計數值

2、TIMx_ARR自動重灌載暫存器:例如向上計數時當CNT從0計數到自動重灌載值ARR就會重新從0計數;向下計數時,就CNT從ARR計數到0時又重新從ARR往下計數;

3、TIMx_PSC預分頻暫存器:決定CNT計數頻率;

4、TIMx_CCMR1/2捕獲 /比較模式暫存器:OCxM設定PWM模式1或2(110/111)

STM32:利用定時器的PWM輸出

5、TIMx_CCR1~4捕獲/比較暫存器:與CNT比較,決定輸出高/低電平,控制佔空比。

6、TIMx_CCER捕獲 /比較使能暫存器:CC1P位:輸入/捕獲1輸出極性。0:高電平有效,1:低電平有效。

舉例:設定向上計數,CC1P為0(高電平有效),PWM模式1,那麼可以得到下圖:

STM32:利用定時器的PWM輸出

PWM輸出配置過程:

1、使能定時器時鐘,和對應GPIO時鐘;

2、初始化I/O:

GPIO_Init();//模式設定為GPIO_Mode_AF_PP

3、重對映還需使能AFIO時鐘,和設定部分或完全重對映;

4、初始化定時器:ARR,PSC等:TIM_TimeBaseInit();

5、設定PWM模式及通道方向、極性等:

6、使能定時器:如TIM_Cmd(TIM3, ENABLE); //使能 TIM3

7、使能預裝載暫存器: 如TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

8、可以實時修改佔空比:TIM_SetComparex(x=1,2,3,4);

Top