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