1. 程式人生 > >STM32 CubeMX輸入捕獲測量PWM波形頻率與佔空比

STM32 CubeMX輸入捕獲測量PWM波形頻率與佔空比

使用的開發板是官方的STM32F412ZGTx NUCLEO開發板。本次主要是為了對PWM波形進行脈寬和頻率的測量。很多的工程使用的是軟體對同一個通道進行3次捕獲,比較耗費系統資源,本次介紹使用硬體進行捕獲,儘可能降低程式碼的工作量。

首先開啟CubeMX,做如下設定:

1.先設定定時器10,用於輸出PWM波形。


2.設定TIM2,用來進行輸入捕獲


至於為什麼這麼設定,我們放在最後面說明,此處使用一路訊號進行兩次捕獲,可以降低軟體的工作量。

3.其他的串列埠設定,這裡不做說明。時鐘樹設定如下:


4.對定時器10進行如下設定:


TIM10使用的頻率為100M,這裡分頻為20M,按照圖中設定的週期,輸出的PWM波形的頻率大概在25K左右。

Pulse用來設定佔空比。

5.定時器2的引數設定如下:


使能從模式,並且工作在復位模式,且觸發訊號源是TI1FP1,也就是在TI1FP1的上升沿,會復位所有的計數器,並更新對應的暫存器。定時器2分頻之後使用10M的訊號源。此處設定的重點是,將IC1捕獲設定為上升沿捕獲,且設定為直連模式,IC2設定為下降沿捕獲。

下面是設計原理,如下:


注意圖中紅色標記的地方。這樣設定之後,IC1,IC2可以對同一訊號進行捕獲,IC1在上升沿捕獲,每次上升沿觸發中斷,讀取對應捕獲暫存器的資料就可以計算頻率,讀取IC2的捕獲暫存器可以計算佔空比。


使能定時器2的全域性中斷,用來讀取捕獲暫存器的資料。


最後生成程式碼,開啟工程新增程式碼如下:

開啟time.c檔案,在第一處新增程式碼如下:




在主函式中新增如下程式碼:


到此程式碼生成完成。

可以直接計算出頻率和佔空比。

測試結果如下:


隨著佔空比的調節,軟體可以準確識別對應的佔空比,這裡可以用來進行PID控制電機的轉速啥的。

配上工程程式碼:STM32F4的程式碼:

CSDN下載地址:https://download.csdn.net/download/qq86376032/10445158