stm32f4 定時捕獲

2021-07-29 09:21:24 字數 2325 閱讀 5773

ⅰ、概述

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...