STM32如何使用定時(shí)器實(shí)現(xiàn)微秒(us)級(jí)延時(shí)?
在STM32微控制器中,可以使用定時(shí)器實(shí)現(xiàn)微秒級(jí)延時(shí)。具體來(lái)說(shuō),可以使用定時(shí)器的計(jì)數(shù)器和自動(dòng)重裝載寄存器來(lái)生成精確的延時(shí)。
以下將詳細(xì)介紹如何使用定時(shí)器實(shí)現(xiàn)微秒級(jí)延時(shí)的步驟:
步驟 1:配置定時(shí)器
首先,需要選擇一個(gè)適合的定時(shí)器。大多數(shù)STM32微控制器都配備了多個(gè)定時(shí)器,因此,可以根據(jù)需求選擇一個(gè)可用的定時(shí)器。一般來(lái)說(shuō),TIM2和TIM3定時(shí)器是常用的,具備較高的精度和可編程性。
接下來(lái),需要進(jìn)行定時(shí)器的基本配置,包括時(shí)鐘源、計(jì)數(shù)模式、分頻系數(shù)等。可以根據(jù)具體需求,選擇合適的配置參數(shù)。通常情況下,可以選擇內(nèi)部時(shí)鐘源作為定時(shí)器的時(shí)鐘源,并將分頻系數(shù)設(shè)置為最小,以獲得最高的精度。
步驟 2:設(shè)置計(jì)數(shù)周期
接下來(lái),需要設(shè)置定時(shí)器的計(jì)數(shù)周期,以確定延時(shí)的時(shí)長(zhǎng)。根據(jù)定時(shí)器的位數(shù)(例如,16位或32位),可以設(shè)置計(jì)數(shù)器的最大值。通過(guò)修改自動(dòng)重裝載寄存器(ARR),可以設(shè)置計(jì)數(shù)器的最大值。
計(jì)算最大延時(shí)(us)的公式為:
最大延時(shí)(us)= (計(jì)數(shù)器最大值+1) * 定時(shí)器分頻系數(shù) / 定時(shí)器頻率
通過(guò)調(diào)整最大值,即可獲得所需的微秒級(jí)延時(shí)。
步驟 3:編寫(xiě)延時(shí)函數(shù)
最后,根據(jù)上述配置,編寫(xiě)一個(gè)延時(shí)函數(shù)來(lái)實(shí)現(xiàn)微秒級(jí)延時(shí)。這個(gè)函數(shù)的實(shí)現(xiàn)基于定時(shí)器的中斷機(jī)制。
首先,需要使能定時(shí)器的中斷,并配置定時(shí)器中斷的優(yōu)先級(jí)。可以使用HAL庫(kù)提供的相關(guān)函數(shù)來(lái)完成這些配置。
然后,編寫(xiě)中斷服務(wù)函數(shù)(ISR),并在其中對(duì)延時(shí)時(shí)間進(jìn)行判斷。當(dāng)計(jì)數(shù)器計(jì)數(shù)達(dá)到預(yù)設(shè)值時(shí),就說(shuō)明已經(jīng)延時(shí)完成,可以清除中斷標(biāo)志位,并執(zhí)行相應(yīng)的處理。
需要注意的是,在定時(shí)器中斷函數(shù)中,可以使用全局變量來(lái)統(tǒng)計(jì)中斷次數(shù),以便于在延時(shí)函數(shù)中進(jìn)行計(jì)時(shí)。
最后,在延時(shí)函數(shù)中,可以使用循環(huán)或者其他方式,來(lái)判斷延時(shí)是否達(dá)到預(yù)設(shè)的時(shí)間。比較常用的方法是使用一個(gè)while循環(huán),判斷計(jì)數(shù)次數(shù)是否滿足條件。當(dāng)滿足條件時(shí),延時(shí)完成。
綜上所述,通過(guò)以上步驟,可以在STM32微控制器中使用定時(shí)器實(shí)現(xiàn)微秒級(jí)延時(shí)。在實(shí)際應(yīng)用中,可以根據(jù)需求進(jìn)行相應(yīng)的配置和優(yōu)化。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
PurePath Studio有定時(shí)器控件嗎?用AIC3254如何實(shí)現(xiàn)毫秒級(jí)的定時(shí)?
發(fā)表于 10-25 07:26
想實(shí)現(xiàn)一個(gè)穩(wěn)定的軟串口,現(xiàn)有的軟串口程序是通過(guò)中斷實(shí)現(xiàn)的,但中斷好像會(huì)被其他中斷打斷,導(dǎo)致數(shù)據(jù)丟失,定時(shí)器按文檔上的說(shuō)法,只能大于50us,能不能實(shí)
發(fā)表于 07-19 06:13
有人使用STM32G4系列芯片內(nèi)部的多個(gè)定時(shí)器做PWM輸出,輸出頻率一樣,占空比也一樣,均為50%。可是,當(dāng)他中途調(diào)整各個(gè)定時(shí)器以相同的工作參數(shù),即改變ARR的值和CCR值后,會(huì)發(fā)現(xiàn)TIM2和TIM5兩個(gè)
發(fā)表于 07-01 09:45
?1607次閱讀
三菱PLC(Programmable Logic Controller,可編程邏輯控制器)是一種廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域的設(shè)備。定時(shí)器是PLC中的一種基本功能,用于實(shí)現(xiàn)延時(shí)控制、計(jì)時(shí)控
發(fā)表于 06-20 11:10
?1847次閱讀
;//不報(bào)警不中斷
delay.counter_en=1;//使能定時(shí)器
timer_init(0,0,&delay);//0組0定時(shí)器初始化
};
按照stm32的寫(xiě)法應(yīng)該還有一個(gè)更新?tīng)顟B(tài)位,等待
發(fā)表于 06-14 06:03
在Linux,uC/OS,F(xiàn)reeRTOS等操作系統(tǒng)中,都帶有軟件定時(shí)器,原理大同小異。典型的實(shí)現(xiàn)方法是:通過(guò)一個(gè)硬件定時(shí)器產(chǎn)生固定的時(shí)鐘節(jié)拍,每次硬件定時(shí)器中斷到,就對(duì)一個(gè)全局的時(shí)間
發(fā)表于 04-29 11:00
?632次閱讀
TOF指令用于允許輸入端斷開(kāi)后的單一間隔定時(shí)。當(dāng)定時(shí)器的輸入端IN為ON時(shí),TOF的狀態(tài)位為ON,其常開(kāi)觸點(diǎn)閉合,常閉觸點(diǎn)斷開(kāi),但是定時(shí)器的當(dāng)前值仍為0。
發(fā)表于 04-01 11:40
?2975次閱讀
TONR指令用于積累許多時(shí)間間隔。當(dāng)定時(shí)器的輸入端IN為ON時(shí),定時(shí)器開(kāi)始計(jì)時(shí),當(dāng)定時(shí)器的當(dāng)前值大于等于設(shè)定值時(shí),定時(shí)器被置位,其常開(kāi)觸點(diǎn)閉合,常閉觸點(diǎn)斷開(kāi)。
發(fā)表于 03-31 09:13
?1076次閱讀
開(kāi)啟定時(shí)器TIM7,是為了寫(xiě)延時(shí)函數(shù)HAL_Delay_us()。具體過(guò)程請(qǐng)移步此文:STM32的HAL庫(kù)實(shí)現(xiàn)自定義
發(fā)表于 03-26 14:19
?2171次閱讀
定時(shí)器是PLC中重要的編程元件,是累計(jì)時(shí)間增量的內(nèi)部器件。大部分自動(dòng)控制領(lǐng)域都需要定時(shí)器進(jìn)行延時(shí)控制,靈活地使用定時(shí)器可以編制出復(fù)雜的控制程序。
發(fā)表于 03-22 12:36
?2330次閱讀
其實(shí),對(duì)于STM32芯片,編碼輸入信號(hào)就是定時(shí)器的計(jì)數(shù)時(shí)鐘源之一。定時(shí)器外接了編碼輸入,若還有剩余通道的話,剩余通道依然可以實(shí)現(xiàn)輸入捕獲或輸出比較功能。
發(fā)表于 03-21 09:06
?1604次閱讀
定時(shí)器 IC 555 是最通用和最常用的 IC 之一,因?yàn)樗膽?yīng)用范圍更廣,如 PWM放大器、延遲定時(shí)器、開(kāi)關(guān)電路、占空比選擇器、時(shí)鐘脈沖發(fā)生器等。這也可用于各種應(yīng)用,如精確
發(fā)表于 02-25 15:16
?2187次閱讀
我在用hpm6750定時(shí)器,通過(guò)定時(shí)器中斷周期處理函數(shù),周期1ms,但是定時(shí)器的每周期時(shí)間都會(huì)飄,會(huì)有us級(jí)的抖動(dòng),我的中斷回調(diào)函數(shù)如下:
發(fā)表于 02-23 07:09
555定時(shí)器是一種集成電路芯片,常被用于定時(shí)器、脈沖產(chǎn)生器和振蕩電路。555可被作為電路中的延時(shí)器件、觸發(fā)器或起振元件。
發(fā)表于 02-02 11:14
?5514次閱讀
是單片機(jī)中的一個(gè)特殊寄存器,它可以以特定的頻率進(jìn)行計(jì)數(shù),并在計(jì)數(shù)達(dá)到一定值時(shí)觸發(fā)中斷。 對(duì)于AvR單片機(jī)來(lái)說(shuō),我們可以利用定時(shí)器的計(jì)數(shù)器來(lái)實(shí)現(xiàn)微秒
發(fā)表于 12-26 14:02
?1251次閱讀
評(píng)論