CubeMX配置輸入捕獲模式獲取輸入信號脈寬

前言:最近做一個小玩意又用到了單片機的輸入捕獲功能,這裏記錄下配置過程(以便以後照搬)

 

1、輸入捕獲原理

在輸入捕獲模式下,當檢測到ICx信號上相應的邊沿後,計數器的當前值被鎖存到捕獲/比較寄存器(TIMx_CCRx)中。當發生捕獲事件時,相應的CCxIF標誌(TIMx_SR寄存器)被置1,如果開放了中斷或者DMA操作,則將產生中斷或者DMA請求。如果發生捕獲事件時CCxIF標誌已經爲高,那麼重複捕獲標誌CCxOF(TIMx_SR寄存器)被置1。寫CCxIF=0可清除CCxIF,或讀取存儲在TIMx_CCRx寄存器中的捕獲數據也可清除CCxIF。寫CCxOF=0可清除CCxOF。

簡單解釋:定時器在計數,如果檢測到設置的極性邊沿信號,觸發中斷。

2、主要問題

1)怎麼使用輸入捕獲功能檢測輸入信號脈寬

在最開始設置爲上升沿捕獲,當捕獲到一個上升沿後,把當前計數器的值記錄下來,然後把極性設置爲下降沿捕獲,當檢測到下降沿信號時候再記下當前寄存器的計數值,然後用兩個值融合即可得到脈寬時間。

這裏有一個問題要注意:比如上升沿時間點在上一個週期,下降沿時間點在下一個週期,那麼在下降沿-上升沿之前還要再加上一個定時器週期。

實現過程:

分頻係數和 計數值可以根據自己情況設定,之後代碼與之配合即可。

主要函數:

1】定義一些標誌位以及存儲數組

2】輸入捕獲中斷回調函數:

3】調用實現及數據處理

調用上面函數即可實現脈寬捕獲功能。


 

2)怎麼實現脈衝計數功能(先放這裏,這個在以後使用再遇到的時候再補充記錄)

 

 

 

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