精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內(nèi)不再提示

在HAL庫中用定時器實現(xiàn)自定義延時函數(shù)delay_us()

STM32嵌入式開發(fā) ? 來源:ARM與嵌入式 ? 作者:保生 ? 2022-09-21 10:33 ? 次閱讀

STM32程序從標準庫移植到HAL庫的時候,會發(fā)現(xiàn)HAL庫中只有一個毫秒級延時函數(shù)HAL_Delay(),而沒有微秒級延時delay_us(),本文就在HAL庫中用定時器實現(xiàn)這個delay_us()。

如下圖,找到HAL_Delay()函數(shù)定義的地方,發(fā)現(xiàn)這個函數(shù)有__weak標識,是一個弱化函數(shù),可以被重寫。

3d7cb228-2f57-11ed-ba43-dac502259ad0.png

由于HAL庫許多地方都使用了HAL_Delay()函數(shù),為了避免惹麻煩建議不重寫,可以用定時器自己寫一個延時函數(shù)。

開發(fā)軟件用的STM32CubeIDE,此Cube軟件的使用方法可以參考這篇文章:STM32外部中斷實例。

項目設(shè)置,勾選后每個外設(shè)的源文件.c、頭文件.h分別成雙出現(xiàn)。

3d9ce480-2f57-11ed-ba43-dac502259ad0.png

我用的是ISP編程,選擇的是Serial Wire。

3db61ea0-2f57-11ed-ba43-dac502259ad0.png

配置外部高速時鐘

3dcaba90-2f57-11ed-ba43-dac502259ad0.png

為了觀察效果,開一個LED,它在PC0管腳,低電平點亮。

3ddfd0e2-2f57-11ed-ba43-dac502259ad0.png

3df15600-2f57-11ed-ba43-dac502259ad0.png

本實例用到了TIM7,它掛在APB1上,時鐘為72MHz。

3e05c11c-2f57-11ed-ba43-dac502259ad0.png

激活TIM7,設(shè)置如下:

預分頻PSC為71,分頻后TIM7時鐘為72/(71+1)=1MHz

計數(shù)模式為向上

計數(shù)周期為1,就是說定時器一個周期后就溢出了,而定時器一個周期的時間是定時器時鐘頻率的倒數(shù),1/1M,也就是1us。

3e20df74-2f57-11ed-ba43-dac502259ad0.png

生成代碼。

3e382fa8-2f57-11ed-ba43-dac502259ad0.png

在tim.c的用戶代碼區(qū)添加如下代碼。

3e4a4242-2f57-11ed-ba43-dac502259ad0.png

在tim.h的user code處添加如下引用代碼,其中HAL_Delay_us()是微秒級延時函數(shù),HAL_Delay_ms()是毫秒級延時函數(shù)。

3e64afb0-2f57-11ed-ba43-dac502259ad0.png

main.c中添加如下代碼,測試效果。

3e741900-2f57-11ed-ba43-dac502259ad0.png

上面代碼連續(xù)用了13個延時函數(shù),是為了湊夠1秒方便觀察。另外延時函數(shù)的參數(shù)是uint16_t,無符號短整型,數(shù)值范圍為0~65535,數(shù)值超限會報錯,如下圖。

3e8d02ee-2f57-11ed-ba43-dac502259ad0.png

編譯代碼。

3ead946e-2f57-11ed-ba43-dac502259ad0.png

下載到開發(fā)板可以看到LED每秒亮一次,STM32CubeIDE軟件生成hex文件的方式,請移步此文:STM32單片機中Hex、Bin文件的區(qū)別與應用。



審核編輯:劉清

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

    關(guān)注

    2266

    文章

    10871

    瀏覽量

    354787
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3237

    瀏覽量

    114467
  • 延時函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    10012
  • HAL庫
    +關(guān)注

    關(guān)注

    1

    文章

    114

    瀏覽量

    6173

原文標題:STM32的HAL庫實現(xiàn)自定義延時函數(shù)delay_us(),文末附代碼

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32CUBEMX(5)--自定義紅外NEC解碼,定時器TIM捕獲方式

    */ HAL_TIM_Base_Start_IT(&htim1);//啟動定時器 HAL_TIM_IC_Start_IT(&htim1,TIM_CHANNEL_2);//
    發(fā)表于 09-05 16:19

    EtherCAT運動控制PT/PVT實現(xiàn)用戶自定義軌跡規(guī)劃

    EtherCAT運動控制PT/PVT實現(xiàn)用戶自定義軌跡規(guī)劃。
    的頭像 發(fā)表于 08-15 11:49 ?552次閱讀
    EtherCAT運動控制<b class='flag-5'>器</b>PT/PVT<b class='flag-5'>實現(xiàn)</b>用戶<b class='flag-5'>自定義</b>軌跡規(guī)劃

    ESP32如何使用中的HF相關(guān)函數(shù)發(fā)送自定義AT指令?

    請問如何使用中的HF相關(guān)函數(shù)發(fā)送自定義AT指令?
    發(fā)表于 06-17 07:43

    如何使用定時器寫一個延時函數(shù)

    不用中斷,就是單純一個用作延時函數(shù),寫了一個下午也沒搞明白,可能我理解出錯了 void delay_us(int us) { timer_config_t
    發(fā)表于 06-14 06:03

    TSMaster 自定義 LIN 調(diào)度表編程指導

    LIN(LocalInterconnectNetwork)協(xié)議調(diào)度表是用于LIN總線通信中的消息調(diào)度的一種機制,我們收到越來越多來自不同用戶希望能夠通過接口實現(xiàn)自定義LIN調(diào)度表的需求。所以
    的頭像 發(fā)表于 05-11 08:21 ?608次閱讀
    TSMaster <b class='flag-5'>自定義</b> LIN 調(diào)度表編程指導

    HAL開啟定時器中斷時會卡死程序的原因?

    當開啟定時器中斷時候,開啟定時器時會卡死程序,調(diào)試,全速運行卡死-HAL_TIM_Base_Start_IT函數(shù),單步調(diào)試發(fā)現(xiàn)卡死
    發(fā)表于 04-16 07:12

    HarmonyOS開發(fā)實例:【自定義Emitter】

    使用[Emitter]實現(xiàn)事件的訂閱和發(fā)布,使用[自定義彈窗]設(shè)置廣告信息。
    的頭像 發(fā)表于 04-14 11:37 ?973次閱讀
    HarmonyOS開發(fā)實例:【<b class='flag-5'>自定義</b>Emitter】

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

    開啟定時器TIM7,是為了寫延時函數(shù)HAL_Delay_us()。具體過程請移步此文:STM32的HAL
    發(fā)表于 03-26 14:19 ?2037次閱讀
    STM32蜂鳴器音樂播放實例教程

    STM32L0使用延時函數(shù)使PWM波形移相,延時函數(shù)不起作用的原因?

    ); delay_us(20); HAL_TIM_PWM_Start( htim2, TIM_CHANNEL_2); 但是定時器2的2通道輸出PWM波并沒有發(fā)生延時變化,這是為什么?
    發(fā)表于 03-21 06:23

    AvR單片機1us延時函數(shù)數(shù)怎么寫

    在編寫AvR單片機的1us延時函數(shù)之前,我們首先需要了解幾個關(guān)鍵概念。 單片機的延時函數(shù)是通過控制
    的頭像 發(fā)表于 12-26 14:02 ?1148次閱讀

    基于YOLOv8實現(xiàn)自定義姿態(tài)評估模型訓練

    Hello大家好,今天給大家分享一下如何基于YOLOv8姿態(tài)評估模型,實現(xiàn)自定義數(shù)據(jù)集上,完成自定義姿態(tài)評估模型的訓練與推理。
    的頭像 發(fā)表于 12-25 11:29 ?2783次閱讀
    基于YOLOv8<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>自定義</b>姿態(tài)評估模型訓練

    博途用戶自定義的使用

    博途官方提供了很多,比如:基本函數(shù)庫、通信、安全、驅(qū)動等等,用戶可以使用中的
    的頭像 發(fā)表于 12-25 10:08 ?875次閱讀
    博途用戶<b class='flag-5'>自定義</b><b class='flag-5'>庫</b>的使用

    stm32delay函數(shù)怎么寫

    STM32的延時函數(shù)可以使用SysTick定時器實現(xiàn)。SysTick定時器是一個24位的計數(shù)
    的頭像 發(fā)表于 12-21 17:53 ?2448次閱讀

    Maxwell中兩種用戶自定義材料實現(xiàn)方法

    Maxwell支持兩種用戶自定義材料。一種是User Library(UserLib),另一種是Personal Library(PersonalLib)。UserLib通常是一個網(wǎng)絡(luò)存儲,企業(yè)
    的頭像 發(fā)表于 12-14 17:33 ?5069次閱讀
    Maxwell中兩種用戶<b class='flag-5'>自定義</b>材料<b class='flag-5'>庫</b>的<b class='flag-5'>實現(xiàn)</b>方法

    HAL常用函數(shù)匯總

    1,系統(tǒng)函數(shù)HAL_Delay原型:voidHAL_Delay(uint32_tDelay);作用:利用滴答定時器生成的系統(tǒng)延遲函數(shù)參數(shù):
    的頭像 發(fā)表于 11-29 08:00 ?3164次閱讀
    <b class='flag-5'>HAL</b><b class='flag-5'>庫</b>常用<b class='flag-5'>函數(shù)</b>匯總