天天看點

stm32 HAL庫 筆記———使用通用定時器輸出pwm

首先配置RCC時鐘,使用外部晶振

stm32 HAL庫 筆記———使用通用定時器輸出pwm

然後配置時鐘樹,我的是stm32f429 最高支援180MHZ,我使用的是TIM5,TIM5挂載在APB1總線上定時器頻率為90MHZ

stm32 HAL庫 筆記———使用通用定時器輸出pwm

啟用内部時鐘,選擇通道輸出PWM

stm32 HAL庫 筆記———使用通用定時器輸出pwm

通道模式分别是:

輸入捕獲模式

輸出比較不輸出模式

輸出比較模式

PWM不輸出模式

PWM輸出模式

還有最下面的 Forced Output ,強制輸出模式

stm32 HAL庫 筆記———使用通用定時器輸出pwm

分頻配置

899+1分頻,可根據需要修改

因為我的TIM5在APB1總線上,對應頻率是90MHZ,那麼分頻後就是90MHZ/900=100KHZ;

模式可選向上/下計數,計數的頻率就是PSC分頻後的頻率,

向上計數是從0到設定的數,我這是99999,

向下計數是從設定的是減到0

我這裡是100KZH,

不使用内部時鐘分組

最後啟用自動重載

PWM輸出頻率=總線時鐘/(分頻因子+1)/(計數值+1)

stm32 HAL庫 筆記———使用通用定時器輸出pwm

Trigger Output (TRGO) Parameters

觸發輸出,這個我們不使用

PWM 通道配置

PWM模式,在同一計數方式下PWM1和PWM2輸出波形互補

Pulse 空占比 先預設0

fast mode 不使用

CH Polanty 通道預設電平,可根據實際情況選擇,

stm32 HAL庫 筆記———使用通用定時器輸出pwm

最後可選中斷使能,也可不選

stm32 HAL庫 筆記———使用通用定時器輸出pwm

使用這個啟用PWM 輸出

使用這個啟用PWM 中斷輸出

HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)

可使用這個改變空占比

空占比=COMPARE/(計數值+1)

關于中斷

·

在中斷處理函數中PWM的回調函數:HAL_TIM_PWM_PulseFinishedCallback(htim);

會在一個PWM周期中執行4次

這4次會在執行分别在:

PWM 上升沿時

PWM 高電平一半時

PWM 下降沿時

PWM 低電平一半時

這4次均為CC1-CC4中斷标志觸發