色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

在HAL庫中用定時器實現自定義延時函數delay_us()

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

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

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

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

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

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

項目設置,勾選后每個外設的源文件.c、頭文件.h分別成雙出現。

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,設置如下:

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

計數模式為向上

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

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

生成代碼。

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

在tim.c的用戶代碼區添加如下代碼。

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

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

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

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

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

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

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

編譯代碼。

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

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



審核編輯:劉清

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

    關注

    2276

    文章

    10947

    瀏覽量

    359158
  • 定時器
    +關注

    關注

    23

    文章

    3259

    瀏覽量

    115884
  • 延時函數
    +關注

    關注

    0

    文章

    25

    瀏覽量

    10086
  • HAL庫
    +關注

    關注

    1

    文章

    121

    瀏覽量

    6477

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

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

收藏 人收藏

    評論

    相關推薦

    STM32C031C6在按鍵中斷處理程序中使用HAL_Delay()延時函數,程序則無法運行怎么解決?

    測試STM32C031C6開發板的長短按鍵,在按鍵中斷處理程序中使用HAL_Delay()延時函數,程序則無法運行,類似進入了死循環,于是則添加了延時
    發表于 03-07 06:50

    think-cell:自定義think-cell(四)

    定義這些設置。 PowerPoint 幻燈片母版視圖中,創建新的自定義版式。您將復制與 think-cell 議程幻燈片的所需外觀最匹配的現有自定義布局之一。 將新的
    的頭像 發表于 01-13 10:37 ?185次閱讀
    think-cell:<b class='flag-5'>自定義</b>think-cell(四)

    GD32VF103使用核內部timer定時器實現延時函數,為什么系統時鐘要除以4?

    使用核內部timer定時器實現延時函數,為什么系統時鐘要除以4? 復制 void delay_1ms(uint32_t count) {
    發表于 09-27 09:54

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

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

    EtherCAT運動控制PT/PVT實現用戶自定義軌跡規劃

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

    如何在IDF框架中使用自定義的靜態和動態

    基于商業需要,我們需要在 ESP-IDF v4.0-rc 這個版本的IDF中開發與使用自定義,有如下問題請協助: 1如何利用IDF框架編寫自定義靜態和動態
    發表于 06-25 07:57

    ESP32如何使用中的HF相關函數發送自定義AT指令?

    請問如何使用中的HF相關函數發送自定義AT指令?
    發表于 06-17 07:43

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

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

    HarmonyOS開發案例:【 自定義彈窗】

    基于ArkTS的聲明式開發范式實現了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實現自定義彈窗
    的頭像 發表于 05-16 18:18 ?1573次閱讀
    HarmonyOS開發案例:【 <b class='flag-5'>自定義</b>彈窗】

    TSMaster 自定義 LIN 調度表編程指導

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

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

    當開啟定時器中斷時候,開啟定時器時會卡死程序,調試,全速運行卡死-HAL_TIM_Base_Start_IT函數,單步調試發現卡死
    發表于 04-16 07:12

    HarmonyOS開發實例:【自定義Emitter】

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

    鴻蒙ArkUI實例:【自定義組件】

    組件是 OpenHarmony 頁面最小顯示單元,一個頁面可由多個組件組合而成,也可只由一個組件組合而成,這些組件可以是ArkUI開發框架自帶系統組件,比如?`Text`?、?`Button`?等,也可以是自定義組件,本節筆者簡單介紹一下自定義組件的語法規范。
    的頭像 發表于 04-08 10:17 ?770次閱讀

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

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

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

    ); delay_us(20); HAL_TIM_PWM_Start( htim2, TIM_CHANNEL_2); 但是定時器2的2通道輸出PWM波并沒有發生延時變化,這是為什么?
    發表于 03-21 06:23
    主站蜘蛛池模板: 亚洲精品在线影院 | 国产精品一久久香蕉国产线看 | 国产午夜精品鲁丝片 | 草神被爆漫画羞羞漫画 | 亚洲zooz人禽交xxxx | 国产麻豆精品人妻无码A片 国产麻豆精品久久一二三 国产麻豆精品传媒AV国产在线 | 美国CERANETWORK超清 | 四房播播最新地址 | 琪琪电影午夜理论片77网 | 国产在线观看不卡 | 欧美乱子YELLOWVIDEO | 亚洲欧美自拍明星换脸 | 影音先锋 av天堂 | 国产高清精品国语特黄A片 国产高清国内精品福利色噜噜 | 欧美牲交A欧美牲交 | 第一次破女初国产美女 | 久久亚洲AV无码精品午色夜麻豆 | 国产人妻XXXX精品HD电影 | 天天夜夜草草久久亚洲香蕉 | 久久国产主播福利在线 | 国内精品视频久久久久免费 | 97国产精品久久精品国产 | 老熟女重囗味HDXX | 黄色a三级三级三级免费看 黄色a三级免费看 | 伊人久久大香线蕉综合色啪 | 国产午夜免费视频片夜色 | 亚洲风情无码免费视频 | 男女久久久国产一区二区三区 | 亚洲成人日韩 | 国产WW高清大片免费看 | 香蕉水蜜桃牛奶涩涩 | 好男人在线视频 | 一二三四中文字幕在线看 | 午夜影院一区二区三区 | 免费看 a一级毛片 免费久久狼人香蕉网 | 色偷偷超碰97人人澡人人 | 国产在线观看www鲁啊鲁免费 | 嗯 用力啊 嗯 c我 啊哈老师 | 伊人久久国产免费观看视频 | 久久综合狠狠综合久久综合88 | 国产国产人免费观看在线视频 |