stm32之定時器輸入捕獲的相關配置

2021-08-19 07:37:43 字數 2271 閱讀 4713

2018/4/24

1.說在前面:

由於最近在忙乙個專案的軟體部分,於是沒有多餘的時間進行總結,今天晚上趁著專案的瓶頸,換換口味

2.輸入捕獲的相關介紹

1.用途:輸入捕獲用來測量脈衝的寬度和測量頻率

2.簡單實現步驟:在檢測通道(tim_x_chx)上邊沿訊號,在邊沿訊號實現跳變時,將當前定時器的值(tim_xcnt)存放入相應的通道捕獲暫存器中(tim_xccrx),完成一次捕獲,配置是否觸發中斷

3.設定輸入捕獲的步驟

1.開啟時鐘,配置gpio口

rcc_apb1periphclockcmd(rcc_apb1periph_tim2, enable); //使能 tim2 時鐘

rcc_apb2periphclockcmd(rcc_apb2periph_gpioa, enable); //使能 gpioa 時

2.初始化定時器,設定相應的自動重裝載值和預分頻係數

tim_timebaseinittypedef tim_timebasestructure;

tim_timebasestructure.tim_period = arr; //設定計數器自動重灌值

tim_timebasestructure.tim_prescaler =psc; //設定預分頻值

tim_timebasestructure.tim_clockdivision = tim_ckd_div1; // tdts = tck_tim

tim_timebasestructure.tim_countermode = tim_countermode_up; //tim 向上計數模式

tim_timebaseinit(tim2, &tim_timebasestructure); //根據指定的引數初始化 tim2

3.設定定時器的輸入比較引數

tim_icinittypedef tim2_icinitstructure;

tim5_icinitstructure.tim_channel = tim_channel_1; //選擇輸入端 ic1 對映到 ti1 上

tim5_icinitstructure.tim_icpolarity = tim_icpolarity_rising; //上公升沿捕獲

tim5_icinitstructure.tim_icselection = tim_icselection_directti; //對映到 ti1 上

tim5_icinitstructure.tim_icprescaler = tim_icpsc_div1; //配置輸入分頻,不分頻

tim5_icinitstructure.tim_icfilter = 0x00;//ic1f=0000 配置輸入濾波器 不濾波

tim_icinit(tim2, &tim2_icinitstructure);

4.使能捕獲和中斷

tim_itconfig( tim2,tim_it_update|tim_it_cc1,enable);//允許更新中斷和捕獲中斷

5.實現中斷分組和編寫中斷服務函式

//nvic_init();

void tim2_irqhandler(void)else tim2ch1_capture_sta++;}}

if (tim_getitstatus(tim2, tim_it_cc1) != reset)//捕獲 1 發生捕獲事件

else //還未開始,第一次捕獲上公升沿}}

tim_clearitpendingbit(tim2, tim_it_cc1|tim_it_update); //清除中斷標誌位

}

6.使能定時器

tim_cmd(tim2,enable ); //使能定時器 2

ending:完成了輸入通道捕獲

stm32定時器pwm模式輸入捕獲

stm32中的定時器,除了tim6和tim7,其他定時器都有輸入捕獲功能。這種模式通常用在對輸入訊號頻率frequency 占空比duty 高低脈寬的計算中,具有很廣泛的用途。stm32的輸入捕獲,簡單的說就是通過檢測timx chx上的邊沿訊號,在邊沿訊號發生跳變 比如上公升沿 下降沿 的時候,將...

stm32單個定時器多通道輸入捕獲

這是用stm32的timer2的通道3和通道4同事捕獲 訊號,顯示高電平的時間,在keil4.7中編譯。tim icinittypedef tim2 icinitstructure 2 1 void tim2 cap init u16 arr,u16 psc 2 void tim2 irqhandl...

STM32單個定時器四通道輸入捕獲

定時器2通道1輸入捕獲配置 arr 自動重灌值 psc 時鐘預分頻數 void tim2 cap init u16 arr,u16 psc 捕獲狀態 7 0,沒有成功的捕獲 1,成功捕獲到一次.6 0,還沒捕獲到高電平 1,已經捕獲到高電平了.5 0 捕獲高電平後溢位的次數 u8 tim2ch1 c...