0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32如何使用定時器實現(xiàn)微秒(us)級延時?

工程師鄧生 ? 來源:未知 ? 作者:劉芹 ? 2023-11-06 11:05 ? 次閱讀

STM32如何使用定時器實現(xiàn)微秒(us)級延時?

在STM32微控制器中,可以使用定時器實現(xiàn)微秒級延時。具體來說,可以使用定時器的計數器和自動重裝載寄存器來生成精確的延時。

以下將詳細介紹如何使用定時器實現(xiàn)微秒級延時的步驟:

步驟 1:配置定時器

首先,需要選擇一個適合的定時器。大多數STM32微控制器都配備了多個定時器,因此,可以根據需求選擇一個可用的定時器。一般來說,TIM2和TIM3定時器是常用的,具備較高的精度和可編程性。

接下來,需要進行定時器的基本配置,包括時鐘源、計數模式、分頻系數等??梢愿鶕唧w需求,選擇合適的配置參數。通常情況下,可以選擇內部時鐘源作為定時器的時鐘源,并將分頻系數設置為最小,以獲得最高的精度。

步驟 2:設置計數周期

接下來,需要設置定時器的計數周期,以確定延時的時長。根據定時器的位數(例如,16位或32位),可以設置計數器的最大值。通過修改自動重裝載寄存器(ARR),可以設置計數器的最大值。

計算最大延時(us)的公式為:

最大延時(us)= (計數器最大值+1) * 定時器分頻系數 / 定時器頻率

通過調整最大值,即可獲得所需的微秒級延時。

步驟 3:編寫延時函數

最后,根據上述配置,編寫一個延時函數來實現(xiàn)微秒級延時。這個函數的實現(xiàn)基于定時器的中斷機制。

首先,需要使能定時器的中斷,并配置定時器中斷的優(yōu)先級。可以使用HAL庫提供的相關函數來完成這些配置。

然后,編寫中斷服務函數(ISR),并在其中對延時時間進行判斷。當計數器計數達到預設值時,就說明已經延時完成,可以清除中斷標志位,并執(zhí)行相應的處理。

需要注意的是,在定時器中斷函數中,可以使用全局變量來統(tǒng)計中斷次數,以便于在延時函數中進行計時。

最后,在延時函數中,可以使用循環(huán)或者其他方式,來判斷延時是否達到預設的時間。比較常用的方法是使用一個while循環(huán),判斷計數次數是否滿足條件。當滿足條件時,延時完成。

綜上所述,通過以上步驟,可以在STM32微控制器中使用定時器實現(xiàn)微秒級延時。在實際應用中,可以根據需求進行相應的配置和優(yōu)化。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7552

    瀏覽量

    151426
  • STM32
    +關注

    關注

    2270

    文章

    10900

    瀏覽量

    356041
  • 定時器
    +關注

    關注

    23

    文章

    3248

    瀏覽量

    114813
收藏 人收藏

    評論

    相關推薦

    請問PurePath Studio有定時器控件嗎?用AIC3254如何實現(xiàn)毫秒定時

    PurePath Studio有定時器控件嗎?用AIC3254如何實現(xiàn)毫秒定時
    發(fā)表于 10-25 07:26

    ESP8266如何實現(xiàn)時間小于3us定時任務?

    實現(xiàn)一個穩(wěn)定的軟串口,現(xiàn)有的軟串口程序是通過中斷實現(xiàn)的,但中斷好像會被其他中斷打斷,導致數據丟失,定時器按文檔上的說法,只能大于50us,能不能
    發(fā)表于 07-19 06:13

    STM32G4系列芯片定時器延時輸出問題

    有人使用STM32G4系列芯片內部的多個定時器做PWM輸出,輸出頻率一樣,占空比也一樣,均為50%。可是,當他中途調整各個定時器以相同的工作參數,即改變ARR的值和CCR值后,會發(fā)現(xiàn)TIM2和TIM5兩個
    的頭像 發(fā)表于 07-01 09:45 ?1655次閱讀
    <b class='flag-5'>STM32</b>G4系列芯片<b class='flag-5'>定時器</b>的<b class='flag-5'>延時</b>輸出問題

    三菱plc如何顯示定時器時間

    三菱PLC(Programmable Logic Controller,可編程邏輯控制)是一種廣泛應用于工業(yè)自動化領域的設備。定時器是PLC中的一種基本功能,用于實現(xiàn)延時控制、計時控
    的頭像 發(fā)表于 06-20 11:10 ?1883次閱讀

    PLC定時器的工作原理和應用

    至關重要的角色。定時器能夠實現(xiàn)對時間的精確控制,是控制系統(tǒng)中實現(xiàn)延時定時、周期控制等功能的關鍵元件之一。本文將詳細闡述PLC中
    的頭像 發(fā)表于 06-18 11:55 ?2507次閱讀

    如何使用定時器寫一個延時函數?

    ;//不報警不中斷 delay.counter_en=1;//使能定時器 timer_init(0,0,&delay);//0組0定時器初始化 }; 按照stm32的寫法應該還有一個更新狀態(tài)位,等待
    發(fā)表于 06-14 06:03

    如何實現(xiàn)一個軟件定時器?

    在Linux,uC/OS,F(xiàn)reeRTOS等操作系統(tǒng)中,都帶有軟件定時器,原理大同小異。典型的實現(xiàn)方法是:通過一個硬件定時器產生固定的時鐘節(jié)拍,每次硬件定時器中斷到,就對一個全局的時間
    的頭像 發(fā)表于 04-29 11:00 ?657次閱讀

    斷電延時定時器指令TOF

    TOF指令用于允許輸入端斷開后的單一間隔定時。當定時器的輸入端IN為ON時,TOF的狀態(tài)位為ON,其常開觸點閉合,常閉觸點斷開,但是定時器的當前值仍為0。
    的頭像 發(fā)表于 04-01 11:40 ?3029次閱讀
    斷電<b class='flag-5'>延時</b><b class='flag-5'>定時器</b>指令TOF

    ?PLC保持型通電延時定時器TONR

    TONR指令用于積累許多時間間隔。當定時器的輸入端IN為ON時,定時器開始計時,當定時器的當前值大于等于設定值時,定時器被置位,其常開觸點閉合,常閉觸點斷開。
    發(fā)表于 03-31 09:13 ?1102次閱讀
    ?PLC保持型通電<b class='flag-5'>延時</b><b class='flag-5'>定時器</b>TONR

    STM32蜂鳴器音樂播放實例教程

    開啟定時器TIM7,是為了寫延時函數HAL_Delay_us()。具體過程請移步此文:STM32的HAL庫實現(xiàn)自定義
    發(fā)表于 03-26 14:19 ?2202次閱讀
    <b class='flag-5'>STM32</b>蜂鳴器音樂播放實例教程

    ?PLC定時器介紹

    定時器是PLC中重要的編程元件,是累計時間增量的內部器件。大部分自動控制領域都需要定時器進行延時控制,靈活地使用定時器可以編制出復雜的控制程序。
    發(fā)表于 03-22 12:36 ?2396次閱讀
    ?PLC<b class='flag-5'>定時器</b>介紹

    如果STM32定時器外接了正交編碼,該剩余通道是否能做PWM輸出呢?

    其實,對于STM32芯片,編碼輸入信號就是定時器的計數時鐘源之一。定時器外接了編碼輸入,若還有剩余通道的話,剩余通道依然可以實現(xiàn)輸入捕獲或輸出比較功能。
    的頭像 發(fā)表于 03-21 09:06 ?1691次閱讀
    如果<b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>外接了正交編碼<b class='flag-5'>器</b>,該剩余通道是否能做PWM輸出呢?

    使用555定時器的可調雙定時器電路

    定時器 IC 555 是最通用和最常用的 IC 之一,因為它的應用范圍更廣,如 PWM放大器、延遲定時器、開關電路、占空比選擇、時鐘脈沖發(fā)生等。這也可用于各種應用,如精確
    的頭像 發(fā)表于 02-25 15:16 ?2227次閱讀
    使用555<b class='flag-5'>定時器</b>的可調雙<b class='flag-5'>定時器</b>電路

    RTThread的定時器中斷時間不準確,會有us的抖動的原因?

    我在用hpm6750定時器,通過定時器中斷周期處理函數,周期1ms,但是定時器的每周期時間都會飄,會有us的抖動,我的中斷回調函數如下:
    發(fā)表于 02-23 07:09

    使用555定時器的報警電路圖

    555定時器是一種集成電路芯片,常被用于定時器、脈沖產生和振蕩電路。555可被作為電路中的延時器件、觸發(fā)或起振元件。
    的頭像 發(fā)表于 02-02 11:14 ?5580次閱讀
    使用555<b class='flag-5'>定時器</b>的報警<b class='flag-5'>器</b>電路圖