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