ⅰ、概述
1000hz、20% - 80%占空比現象:
1000hz、51% - 58%占空比現象:
關於本文的更多詳情請往下看。
筆者針對於初學者提供的例程都是去掉了許多不必要的功能,精簡了官方的**,對初學者一看就明白,以簡單明瞭的工程供大家學習。
stm32f4_tim輸入波形捕獲(脈衝頻率、占空比)例項:
訪問密碼
stm32f4資料:
訪問密碼 53e7
ⅲ、原理描述
筆者將捕獲pwm波形簡單畫了乙個示意圖:
從上面的示意圖可以看得出來我們需要捕獲三個值(兩個上公升沿 和 中間的下降沿)。兩個上公升沿用於計算乙個波形的週期(也就是可以計算其頻率),因為捕獲的「週期差值」就是脈衝數,而通過配置,我們可以知道每乙個脈衝數的時間,這樣就知道整個「週期差值」的時間。得到了「占空比差值」和「週期差值」,波形的占空比就得到了。
筆者將tim分為三大塊:時基部分、比較輸出和輸入捕獲,請看下面截圖「通用tim框圖」。
前面的文章已經將「時基部分」的一些基礎知識講述過了,「時基部分」的功能是比較有用的,它除了可以用來延時(定時)之外,它還可以拿來觸發其他一些功能,如:觸發da轉換、ad採集等。
該文主要講述「輸入捕獲」部分,這部分輸入的通道1與2、通道3與4可以相互協作。該文只使用了tim5的通道3,捕獲輸入訊號頻率。
通用tim框圖:
ⅳ、源**分析
筆者以f4標準外設庫(同時也建議初學者使用官方的標準外設庫)為基礎建立的工程,主要以庫的方式來講述。
rcc、nvic等這些容易忘記配置的地方都一樣。
1.tim輸入捕獲引腳配置
該函式位於timer.c檔案下面;
主要增加了一路引腳。
注意2點:
a.引腳與通道對應:這個需要參看「資料手冊」,該文tim5通道3對應的引腳就是pa2.
b.復用配置:gpio_pinafconfig(gpioa, gpio_pinsource2, gpio_af_tim5);
這個地方對於f1轉f0、f4等的朋友需要注意,更加晶元系列及庫的不同,他們之間存在一定的差異。
2. tim輸入捕獲配置
該函式位於timer.c檔案下面;
「時基部分」是在前面兩篇文章講述過的,這裡主要對「輸入捕獲」部分理解,主要5個引數:
捕獲通道:就是我們捕獲的通道;
捕獲極性:就是我們捕獲脈衝的高還是低電平;
捕獲選擇:是直接捕獲該通道,還是上面說的1,2通道協助捕獲;
捕獲分頻:對捕獲的脈衝分頻;
捕獲濾波:過濾掉波形;
3. 計算捕獲波形頻率原理
該函式位於stm32f4xx_it.c檔案下面;
該函式是tim捕獲波形的中斷函式,同乙個(tim5)中斷入口,有兩個通道通道,也是計算頻率和占空比重要的函式;
結合原理描述中「示意圖」可以知道,我們需要捕獲3個值:v0、v2和v1。
v0和v2是在通道3捕獲:
capture_value0 = (uint32_t)(tim5->ccr3);
capture_value2 = (uint32_t)(tim5->ccr3);
v1在通道4捕獲:
capture_value1 = (uint32_t)(tim5->ccr4);
其中有乙個標誌位flag_capture是用於標誌我們捕獲的狀態,我們捕獲了v0將flag_capture = 1就是告訴程式我們要捕獲v1 和 v2的值了。
ⅴ、說明
以上總結僅供參考,若有不對之處,敬請諒解。
ⅵ、最後
STM32F4定時器學習
高階定時器 time1 time8 通用定時器 time2time5,tim9tim14 基本定時器 time6 和 time7 等 tim2 tim5 的暫存器介紹 控制暫存器 1 timx cr1 只用到了 timx cr1 的最低位,也就是計數器使能位,該位必須置 1,才能讓定時器開始計數。d...
基於stm32f407建立stm32F427工程
分為三個部分 1.啟動檔案 2.fwilib 包含兩個資料夾inc和src。src裡面是stm32資源的c檔案,inc則是32資源的h檔案 3.user這也是我不太理解的部分 ddbugconfig只包含了用於debug的初始化,則是f4的系統檔案。我是在f407的基礎上改的 總的來說 1.改了晶元...
stm32F4 時基定時器(2)
找了很多的資料,終於把時基定時器的給弄懂了,沒有使用庫函式,直接操作暫存器。下面介紹stm32中的systick,systick 部分內容屬於nvic控制部分,一共有4個暫存器,名稱和位址分別是 stk csr,0xe000e010 控制暫存器 stk load,0xe000e014 過載暫存器 s...