Ⅰ、概述
本文在前面文章“STM32基本的計數(shù)原理”的基礎(chǔ)上進(jìn)行拓展,講述關(guān)于“定時器輸入捕獲”的功能,和上一篇文章“定時器比較輸出”區(qū)別還是挺大的。在引腳上剛好相反:一個輸入、一個輸出。
本文只使用一個TIM5通道3(也可其他通道)捕獲輸入脈沖的頻率,通過捕獲兩次輸入脈沖的間隔時間來計算脈沖波形的頻率。間隔一定時間讀取頻率并通過串口打印出來。
當(dāng)然也可通過兩路通道捕獲脈沖信號的占空比,計劃后期整理。
筆者通過信號發(fā)生器產(chǎn)生信號,上位機(jī)串口助手顯示捕獲的脈沖頻率。(沒有信號發(fā)生器的朋友可以結(jié)合上一篇文章PWM輸出做信號源:在同一塊板子上也可以使用不同定時器,將輸出引腳接在輸入引腳)
先看一下實例的實驗現(xiàn)象:
關(guān)于本文的更多詳情請往下看。
Ⅱ、實例工程下載
筆者針對于初學(xué)者提供的例程都是去掉了許多不必要的功能,精簡了官方的代碼,對初學(xué)者一看就明白,以簡單明了的工程供大家學(xué)習(xí)。
筆者提供的實例工程都是在板子上經(jīng)過多次測試并沒有問題才上傳至360云盤,歡迎下載測試、參照學(xué)習(xí)。
提供下載的軟件工程是STM32F417的,但F4其他型號也適用(適用F4其他型號:關(guān)注微信,回復(fù)“修改型號”)。
STM32F4_TIM輸入波形捕獲(脈沖頻率)實例:
https://yunpan.cn/cB6XrSi6rK3TP 訪問密碼 7eed
STM32F4資料:
https://yunpan.cn/cR2pxqF5x2d9c 訪問密碼 53e7
Ⅲ、原理描述
筆者將TIM分為三大塊:時基部分、比較輸出和輸入捕獲,請看下面截圖“通用TIM框圖”。
前面的文章已經(jīng)將“時基部分”的一些基礎(chǔ)知識講述過了,“時基部分”的功能是比較有用的,它除了可以用來延時(定時)之外,它還可以拿來觸發(fā)其他一些功能,如:觸發(fā)DA轉(zhuǎn)換、AD采集等。
上一篇文章講述的就是圖中比較輸出部分,比較輸出部分功能相對比較簡單。
該文主要講述“輸入捕獲”部分,這部分輸入的通道1與2、通道3與4可以相互協(xié)作。該文只使用了TIM5的通道3,捕獲輸入信號頻率。
通用TIM框圖:
上面兩圖截取“STM32F4x5、x7參考手冊”建議下載手冊參看。
Ⅳ、源代碼分析
筆者以F4標(biāo)準(zhǔn)外設(shè)庫(同時也建議初學(xué)者使用官方的標(biāo)準(zhǔn)外設(shè)庫)為基礎(chǔ)建立的工程,主要以庫的方式來講述。
1.RCC時鐘
該函數(shù)位于bsp.c文件下面;
本文提供的例程也可以使用TIM2(只要將例程源代碼中使用到的TIM5改為TIM2,以及引腳改正過來就行)。
重點注意:
A.外設(shè)RCC時鐘的配置要在其外設(shè)初始化的前面;
B.匹配對應(yīng)時鐘。
比如:RCC_APB2外設(shè)不要配置在RCC_APB1時鐘里面
【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);這樣能編譯通過,但這是錯誤的代碼】
2.TIM輸入捕獲引腳配置
該函數(shù)位于timer.c文件下面;
注意2點:
A.引腳與通道對應(yīng):這個需要參看“數(shù)據(jù)手冊”,該文TIM5通道3對應(yīng)的引腳就是PA2.
B.復(fù)用配置:GPIO_PinAFConfig(GPIOA,GPIO_PinSource2, GPIO_AF_TIM5);
這個地方對于F1轉(zhuǎn)F0、F4等的朋友需要注意,更加芯片系列及庫的不同,他們之間存在一定的差異。
3.TIM輸入捕獲配置
該函數(shù)位于timer.c文件下面;
“時基部分”是在前面兩篇文章講述過的,這里主要對“輸入捕獲”部分理解,主要5個參數(shù):
捕獲通道:就是我們捕獲的通道;
捕獲極性:就是我們捕獲脈沖的高還是低電平;
捕獲選擇:是直接捕獲該通道,還是上面說的1,2通道協(xié)助捕獲;
捕獲分頻:對捕獲的脈沖分頻;
捕獲濾波:過濾掉波形;
4.NVIC配置
該函數(shù)位于bsp.c文件下面;
這里不用多說,只是提醒大家不要忘記配置這里。
5.計算捕獲波形頻率原理
該函數(shù)位于stm32f4xx_it.c文件下面;
該函數(shù)是中斷函數(shù),也是計算頻率重要的函數(shù);
A.兩次捕獲值
捕獲配置中,捕獲的極性是高電平,這里就是在“上升沿”中斷(捕獲),如果配置為“下降沿”,則是在信號的下降沿中斷。
B.計算兩次捕獲差值
這里常人理解都是:capture = (capture_value2- capture_value1);
但是,需要考慮另外兩種情況,就是計數(shù)器在計滿和相等時候。
C.計算頻率
這里可以理解為:1秒鐘計了多少個數(shù)。
但是需要注意的是截圖中“/2”,對系統(tǒng)時鐘除2,原因在于RCC給TIM提供的時鐘就是除了2的,所以,這個地方需要/2.
-
Tim
+關(guān)注
關(guān)注
0文章
81瀏覽量
17956 -
脈沖頻率
+關(guān)注
關(guān)注
0文章
12瀏覽量
7983 -
STM32F4
+關(guān)注
關(guān)注
3文章
194瀏覽量
28195
發(fā)布評論請先 登錄
相關(guān)推薦
評論