国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

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

STM32嵌入式開發(fā) ? 來源:ARM與嵌入式 ? 作者:保生 ? 2022-09-21 10:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

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

配置外部高速時(shí)鐘

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

為了觀察效果,開一個(gè)LED,它在PC0管腳,低電平點(diǎn)亮。

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

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

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

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

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

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

計(jì)數(shù)模式為向上

計(jì)數(shù)周期為1,就是說定時(shí)器一個(gè)周期后就溢出了,而定時(shí)器一個(gè)周期的時(shí)間是定時(shí)器時(shí)鐘頻率的倒數(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()是微秒級(jí)延時(shí)函數(shù),HAL_Delay_ms()是毫秒級(jí)延時(shí)函數(shù)。

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

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

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

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

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

編譯代碼。

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

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



審核編輯:劉清

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

    關(guān)注

    2309

    文章

    11162

    瀏覽量

    373404
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3368

    瀏覽量

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

    關(guān)注

    0

    文章

    25

    瀏覽量

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

    關(guān)注

    1

    文章

    121

    瀏覽量

    7628

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    CW32系統(tǒng)滴答SysTick定時(shí)器詳解

    初始化后,通過SysTickDelay(uint32_t Delay)函數(shù)實(shí)現(xiàn),該函數(shù)的形參為需要延時(shí)的mS數(shù)。 對(duì)于
    發(fā)表于 01-21 07:20

    rt-thread軟件定時(shí)器大家一般怎么用?

    請(qǐng)教各位,rt-thread軟件定時(shí)器大家一般怎么用 ? 按文檔說明 軟定時(shí)器一個(gè)單獨(dú)的任務(wù)里運(yùn)行,不能在定時(shí)器里做會(huì)導(dǎo)致延時(shí)的操作,所
    發(fā)表于 01-12 09:39

    電能質(zhì)量監(jiān)測(cè)裝置可自定義監(jiān)測(cè)時(shí)段嗎?

    電能質(zhì)量監(jiān)測(cè)裝置普遍支持自定義監(jiān)測(cè)時(shí)段,現(xiàn)代中高端裝置還具備分時(shí)差異化監(jiān)測(cè)與靈活觸發(fā)能力,可按時(shí)間、事件或混合策略定制采集與存儲(chǔ),兼顧精度、效率與存儲(chǔ)成本。 一、自定義監(jiān)測(cè)時(shí)段的核心實(shí)現(xiàn)方式 1.
    的頭像 發(fā)表于 12-10 16:49 ?1071次閱讀

    實(shí)現(xiàn)一個(gè)嵌入式的軟件定時(shí)器

    ,只需要在執(zhí)行完回調(diào)函數(shù)后,獲取當(dāng)前時(shí)間標(biāo)記的值,加上延時(shí)時(shí)間作為下一次到期時(shí)間,繼續(xù)運(yùn)行軟件定時(shí)器即可。 3.基于文件的軟件定時(shí)器 3
    發(fā)表于 12-10 08:29

    Cortex-M內(nèi)核中的精確延時(shí)的方法

    。很多裸機(jī)教程使用延時(shí)函數(shù)又是基于SysTick的,這樣一來又難免產(chǎn)生沖突。 很多人會(huì)說,不是還有定時(shí)器嗎,定時(shí)器的計(jì)時(shí)是超級(jí)精確的。這點(diǎn)我不否認(rèn),但是假設(shè),如果一個(gè)系統(tǒng),總是進(jìn)入
    發(fā)表于 11-21 07:51

    使用系統(tǒng)定時(shí)器SysTick來實(shí)現(xiàn)精確延時(shí)微秒和毫秒函數(shù)

    );//定時(shí)1ms即SysTick定時(shí)器每1ms中斷一次,如果我們定義全局變量,然后中斷函數(shù)中,讓此變量遞減,而在
    發(fā)表于 11-20 07:12

    軟硬件協(xié)同技術(shù)分享 - 任務(wù)劃分 + 自定義指令集

    利用定時(shí)器中斷,率先判斷該FIFO的值不為空,并且保證一次讀取一個(gè)幀長(即10個(gè)周期)的數(shù)據(jù),能夠實(shí)現(xiàn)該FIFO內(nèi)數(shù)據(jù)即寫即讀,數(shù)據(jù)寫入不久便能取走的效果。 自定義指令集設(shè)計(jì) E203
    發(fā)表于 10-28 08:03

    采用匯編指示符來使用自定義指令

    具體實(shí)現(xiàn) 1、采用.word .half .dword等匯編指示符直接插入自定義指令,這種方法需要自己指定寄存。其中.word為插入一個(gè)字的數(shù)據(jù)即32位,.half為插入半字即16位
    發(fā)表于 10-28 06:02

    rtthread的main函數(shù)里用HAL_Delay函數(shù)不起作用是哪里的問題?

    rtthread的main函數(shù)里用HAL_Delay函數(shù)無效,我設(shè)置延時(shí)500ms打印一次,但是實(shí)際上,一秒打印了幾百次,很顯然是
    發(fā)表于 09-15 07:53

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

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

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

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

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

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

    LabVIEW運(yùn)動(dòng)控制(三):EtherCAT運(yùn)動(dòng)控制的高效加工指令自定義封裝

    LabVIEW高效加工指令自定義封裝
    的頭像 發(fā)表于 04-08 13:49 ?3627次閱讀
    LabVIEW運(yùn)動(dòng)控制(三):EtherCAT運(yùn)動(dòng)控制<b class='flag-5'>器</b>的高效加工指令<b class='flag-5'>自定義</b>封裝

    如何添加自定義單板

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

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

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