STM32的輸入捕獲

2021-09-27 12:34:35 字數 2893 閱讀 7216

實驗目的:

在串列埠除錯助手上列印出按鍵按下的時間

實驗步驟:

實驗程式:

/*******************************timer.c********************************/

#include "sys.h"

#include "stm32f4xx.h"

extern u8 tim5cha1_capture_sta;

extern u16 tim5cha1_capture_val;

/*本示例的作用就是,

當按鍵按下時,每次輸入捕獲的時間差,

然後從串列埠除錯助手中列印出其時間差;

*//*

關於輸入捕獲的操作可參考暫存器版的步驟

*//*

定時器輸入捕獲的初始化函式:

主要是關於暫存器的相關配置

*//*初始化定時器5為輸入捕獲*/

void tim5_init(void)

/*每次在按鍵按下時,輸入捕獲按鍵,

然後每產生兩次中斷,就在在中斷裡邊

算出兩次捕獲之間的時間差;

*/void tim5_irqhandler(void)

else}}

if((tim5->sr &

0x2) ==

0x2)

else}}

/*在中斷裡邊最後記得清中斷標誌:

*/tim5->sr &= ~(

0x3);

}

/*******************************timer.h*********************************/

#ifndef _exti_h

#define _exti_h

void

tim5_init

(void)

;

#endif

/*******************************test.c***********************************/

#include

"sys.h"

#include

"delay.h"

#include

"beep.h"

#include

"exti.h"

#include

"led.h"

#include

"uart.h"

#include

"usart.h"

u8 tim5cha1_capture_sta;

u32 tim5cha1_capture_val;

intmain

(void)}}

實驗分析:1.定時器的框圖及輸入捕獲框圖的放大版

注:通過檢測timx_chx上的邊沿訊號,在邊沿訊號發生跳變(比如上公升沿/下降沿)的時候,

將當前定時器的值(timx_cnt)存放到對應的捕獲/比較暫存器(timx_ccrx)裡面,完成一次捕獲。

2.輸入捕獲的工作流程分析:

3.中斷處理函式部分的提示

注意事項:

1.只要涉及到中斷,在最後一定都要記得使能中斷

2.按鍵那塊,處理不是很好,有時會一連打出好幾串數字;

更準確的說是按鍵有時會有些抖動,就相當於按了好幾下,但沒有濾掉波段較小的那一部分;

stm32 輸入捕獲

根據定時器的計數頻率,我們就可以算出t1 t2的時間,從而得到高電平脈寬 計算公式 n arr ccrx2首先設定定時器通道為上公升沿捕獲,這樣在t1時刻,就會捕獲到當前的cnt值,然後立即清零cnt,並設定定時器通道為下降沿捕獲,這樣到t2時刻,又會發生捕獲事件,得到此時的cnt值,記為ccrx2...

stm32 輸入捕獲

stm32f1 除了基本定時器 tim6 和 tim7,其他定時器都具有輸入捕 獲功能。輸入捕獲可以對輸入的訊號的上公升沿,下降沿或者雙邊沿進行捕獲,通 常用於測量輸入訊號的脈寬 測量 pwm 輸入訊號的頻率及占空比 原理 輸入捕獲模式下,u8 tim5 ch1 capture sta 輸入捕獲狀態...

stm32輸入捕獲

輸入捕獲模式可以用來測量脈衝寬度或者測量頻率。除tim6和tim7其他定時器都有輸入捕獲功能。工作過程 簡單的說就是通過檢測 timx chx 上的邊沿訊號,在邊沿訊號發生跳變 比如上公升沿 下降沿 的時候,將當前定時器的值 timx cnt 存放到對應的通道的捕獲 比較暫存器 timx ccrx ...