chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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è)置如下:

預(yù)分頻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ū)別與應(yīng)用。



審核編輯:劉清

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

    關(guān)注

    2293

    文章

    11032

    瀏覽量

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

    關(guān)注

    23

    文章

    3298

    瀏覽量

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

    關(guān)注

    0

    文章

    25

    瀏覽量

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

    關(guān)注

    1

    文章

    121

    瀏覽量

    6948

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    KiCad 中的自定義規(guī)則(KiCon 演講)

    “ ?Seth Hillbrand KiCon US 2025 上為大家介紹了 KiCad 的規(guī)則系統(tǒng),并詳細講解了自定義規(guī)則的設(shè)計與實例。? ” ? 演講主要圍繞 加強 KiCad 中的
    的頭像 發(fā)表于 06-16 11:17 ?620次閱讀
    KiCad 中的<b class='flag-5'>自定義</b>規(guī)則(KiCon 演講)

    HarmonyOS應(yīng)用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統(tǒng)默認鍵盤的解決方案,可實現(xiàn)鍵盤個性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習慣,對按鍵布局進行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。安全防護層面,自定義
    的頭像 發(fā)表于 06-05 14:19 ?691次閱讀

    如何使用自定義設(shè)置回調(diào)函數(shù)

    你好,我正在嘗試編寫自己的自定義設(shè)置回調(diào)函數(shù),并使用 fastEnum=false。 是否有任何代碼示例或資料可供我參考? void CyU3PUsbRegisterSetupCallback
    發(fā)表于 05-21 06:11

    如何添加自定義單板

    開發(fā)過程中,用戶有時需要創(chuàng)建自定義板配置。本節(jié)將通過一個實例講解用戶如何創(chuàng)建屬于自己的machine,下面以g2l-test.conf為例進行說明。
    的頭像 發(fā)表于 03-12 14:43 ?590次閱讀

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

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

    如何快速創(chuàng)建用戶自定義Board和App工程

    概述自HPM_SDKv1.7.0發(fā)布開始,HPM_ENV中新增了user_template文件夾,以方便用戶快速創(chuàng)建自定義的Board和App工程。user_template是用戶模板工程,用戶
    的頭像 發(fā)表于 02-08 13:38 ?524次閱讀
    如何快速創(chuàng)建用戶<b class='flag-5'>自定義</b>Board和App工程

    Altium Designer 15.0自定義元件設(shè)計

    電子發(fā)燒友網(wǎng)站提供《Altium Designer 15.0自定義元件設(shè)計.pdf》資料免費下載
    發(fā)表于 01-21 15:04 ?0次下載
    Altium Designer 15.0<b class='flag-5'>自定義</b>元件設(shè)計

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

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

    think-cell;自定義think-cell(一)

    本章介紹如何自定義 think-cell,即如何更改默認顏色和其他默認屬性;這是通過 think-cell 的樣式文件完成的,這些文件將在前四個部分中進行討論。 第五部分 C.5 設(shè)置默認議程幻燈片
    的頭像 發(fā)表于 01-08 11:31 ?744次閱讀
    think-cell;<b class='flag-5'>自定義</b>think-cell(一)

    如何快速入門HAL編程 HAL與裸機編程的比較

    如何快速入門HAL編程 要快速入門HAL編程,可以遵循以下步驟: 了解基礎(chǔ)知識 : 掌握C語言編程基礎(chǔ),包括變量、數(shù)據(jù)類型、函數(shù)、指針等
    的頭像 發(fā)表于 12-02 11:39 ?1139次閱讀

    GD32VF103使用核內(nèi)部timer定時器實現(xiàn)延時函數(shù),為什么系統(tǒng)時鐘要除以4?

    使用核內(nèi)部timer定時器實現(xiàn)延時函數(shù),為什么系統(tǒng)時鐘要除以4? 復制 void delay_1ms(uint32_t count) {
    發(fā)表于 09-27 09:54

    創(chuàng)建自定義的基于閃存的引導加載程序(BSL)

    電子發(fā)燒友網(wǎng)站提供《創(chuàng)建自定義的基于閃存的引導加載程序(BSL).pdf》資料免費下載
    發(fā)表于 09-19 10:50 ?0次下載
    創(chuàng)建<b class='flag-5'>自定義</b>的基于閃存的引導加載程序(BSL)

    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 ?1260次閱讀
    EtherCAT運動控制<b class='flag-5'>器</b>PT/PVT<b class='flag-5'>實現(xiàn)</b>用戶<b class='flag-5'>自定義</b>軌跡規(guī)劃

    定時器回調(diào)函數(shù)能不能用ICACHE_FLASH_ATTR定義

    非 OS SDK 中斷處理函數(shù)中,請勿使用任何 ICACHE_FLASH_ATTR 定義函數(shù)。 請問: 1、定時器和hw
    發(fā)表于 07-22 06:33