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

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

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

在STM32中實(shí)現(xiàn)延時(shí)兩小時(shí)功能的方法

無(wú)際單片機(jī)編程 ? 來(lái)源:無(wú)際單片機(jī)編程 ? 2023-03-31 16:55 ? 次閱讀

延時(shí)功能,雖然簡(jiǎn)單,不過(guò)不同的延時(shí)需求多了,就很頭疼。

STM32中實(shí)現(xiàn)延時(shí)2小時(shí)的功能,有以下幾種方式:

1.使用延時(shí)函數(shù)

可以使用STM32提供的延時(shí)函數(shù)來(lái)實(shí)現(xiàn)延時(shí)功能,延時(shí)函數(shù)根據(jù)CPU時(shí)鐘頻率和延時(shí)時(shí)間計(jì)算出延時(shí)的時(shí)間,在延時(shí)期間CPU處于忙等待狀態(tài)。

需要注意的是,延時(shí)函數(shù)會(huì)占用過(guò)多的CPU資源,并且在延時(shí)期間無(wú)法執(zhí)行其他任務(wù)。

這種方式是初學(xué)者玩的,如果用到實(shí)際項(xiàng)目,除了大聰明,我找不到更好的詞夸你。

2.使用定時(shí)器和中斷

可以使用STM32內(nèi)置的定時(shí)器和中斷來(lái)實(shí)現(xiàn)延時(shí)功能。

將定時(shí)器配置為2小時(shí)的定時(shí)周期,并啟用定時(shí)器中斷。

在中斷處理函數(shù)中設(shè)置標(biāo)志位表示延時(shí)結(jié)束,并執(zhí)行相應(yīng)的操作。

需要注意的是,定時(shí)器中斷的頻率不能太高,否則會(huì)占用過(guò)多的系統(tǒng)資源,但中斷頻率也不能太慢,畢竟定時(shí)器是稀缺資源,一個(gè)定時(shí)器可能有很多不同的定時(shí)需求。

這個(gè)可能是最多人的選擇,畢竟省心、省成本。

3.使用RTC實(shí)時(shí)時(shí)鐘

可以使用STM32內(nèi)置的RTC實(shí)時(shí)時(shí)鐘模塊來(lái)實(shí)現(xiàn)延時(shí)功能。

將RTC設(shè)置為2小時(shí)的計(jì)時(shí)周期,并啟用RTC中斷。

在中斷處理函數(shù)中設(shè)置標(biāo)志位表示延時(shí)結(jié)束,并執(zhí)行相應(yīng)的操作。

需要注意的是,RTC的精度相對(duì)于定時(shí)器較高,但配置和使用上相對(duì)復(fù)雜。

我一般不會(huì)用這種,因?yàn)榕渲帽容^麻煩,我比較懶。

4.使用外部實(shí)時(shí)時(shí)鐘模塊

可以使用外部的實(shí)時(shí)時(shí)鐘模塊,如DS1302等,來(lái)實(shí)現(xiàn)延時(shí)功能。

將實(shí)時(shí)時(shí)鐘模塊連接到STM32的GPIO口,通過(guò)SPI或I2C等總線協(xié)議與STM32進(jìn)行通信,獲取當(dāng)前時(shí)間并計(jì)算出延時(shí)結(jié)束的時(shí)間。

需要注意的是,外部實(shí)時(shí)時(shí)鐘模塊的精度和配置相對(duì)于RTC更加復(fù)雜。

這種方式有點(diǎn)脫褲子放屁的感覺(jué),還會(huì)增加硬件成本,不過(guò)有些場(chǎng)合確實(shí)需要這樣做,比如你看老板不爽,老板又不懂技術(shù)的時(shí)候。

5.無(wú)際原創(chuàng)的程序架構(gòu)

做了單片機(jī)開(kāi)發(fā)10幾年,終于輪到我裝逼了,如果是我,我肯定用自己寫(xiě)的輪詢架構(gòu)去實(shí)現(xiàn)。

94a6fe8c-caf2-11ed-bfe3-dac502259ad0.jpg

比如說(shuō)上面hal_LedProc這個(gè)任務(wù),不管我要定時(shí)多長(zhǎng)時(shí)間去執(zhí)行,我只需要修改一個(gè)數(shù)值就可以。

比如2小時(shí)換算成ms就是7200000ms,任務(wù)Tick的時(shí)間是10ms,如果想讓hal_LedProc任務(wù)2小時(shí)執(zhí)行一次,那就設(shè)置成72000方可實(shí)現(xiàn)。

定時(shí)時(shí)間到了以后,需要執(zhí)行什么程序,直接放在hal_LedProc函數(shù)里即可,這就很舒服…





審核編輯:劉清

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

    關(guān)注

    68

    文章

    10901

    瀏覽量

    212759
  • STM32
    +關(guān)注

    關(guān)注

    2271

    文章

    10923

    瀏覽量

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

    關(guān)注

    0

    文章

    25

    瀏覽量

    10047
  • 定時(shí)器中斷
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    11250

原文標(biāo)題:stm32如何延時(shí)兩小時(shí),用哪種方式好?

文章出處:【微信號(hào):nanshuqg,微信公眾號(hào):無(wú)際單片機(jī)編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32單片機(jī)的延時(shí)原理和延時(shí)函數(shù)方法

    當(dāng)涉及到單片機(jī)編程時(shí),延時(shí)是一項(xiàng)常見(jiàn)但關(guān)鍵的任務(wù)。許多應(yīng)用,我們需要控制程序暫停一段時(shí)間,以實(shí)現(xiàn)精確的時(shí)間控制或協(xié)調(diào)不同設(shè)備之間的操作。本文將以
    發(fā)表于 08-09 09:13 ?1.8w次閱讀

    stm32如何延時(shí)兩小時(shí),用哪種方式好?

    第一種,RTCstm32外接一個(gè)RTC時(shí)鐘芯片,使用方法就是記錄當(dāng)前時(shí)間,比如,當(dāng)前時(shí)間是12點(diǎn)24分36秒。然后,主函數(shù)里面循環(huán)查詢時(shí)間,當(dāng)時(shí)間到達(dá)14點(diǎn)24分36秒時(shí),發(fā)送信息?!?誤差
    發(fā)表于 11-13 09:40

    MCU編程STM32延時(shí)函數(shù)如何去實(shí)現(xiàn)

    STM32筆記】[sub]STM32 延時(shí)函數(shù)的實(shí)現(xiàn)在MCU編程,微秒延時(shí)和毫秒
    發(fā)表于 08-24 07:55

    知識(shí)賦能第二期(入門)兩小時(shí)玩轉(zhuǎn)git和gitee

    只是賦能第二期(入門)兩小時(shí)玩轉(zhuǎn)git和gitee
    發(fā)表于 12-03 11:09

    兩小時(shí)DIY速成 罐頭盒制作斯特林發(fā)動(dòng)機(jī)

    兩小時(shí)DIY速成 罐頭盒制作斯特林發(fā)動(dòng)機(jī),現(xiàn)在,我將使用廢棄不用的破銅爛鐵制備一個(gè)小功率引擎
    發(fā)表于 07-23 14:44 ?4.6w次閱讀
    <b class='flag-5'>兩小時(shí)</b>DIY速成 罐頭盒制作斯特林發(fā)動(dòng)機(jī)

    S7A驅(qū)動(dòng)的兩小時(shí)破解工具_(dá)源程序

    三菱PLC(可編程邏輯控制器)編程實(shí)例項(xiàng)目例程——S7A驅(qū)動(dòng)的兩小時(shí)破解工具,可以方便的破解西門子以太網(wǎng)驅(qū)動(dòng)
    發(fā)表于 11-08 17:32 ?109次下載

    蘋(píng)果你這是玩我們呢?AirPods 開(kāi)售兩小時(shí)售罄

    蘋(píng)果低調(diào)上架 AirPods 了,兩小時(shí)內(nèi)被搶購(gòu)一空,蘋(píng)果于 9 月份發(fā)布了重新定義的無(wú)線耳機(jī) AirPods 目前已經(jīng)開(kāi)放購(gòu)買,其售價(jià)為 1288 元人民幣。蘋(píng)果官方網(wǎng)站上顯示,AirPods 最晚將于 12 月 22 日送達(dá)用戶手中。
    發(fā)表于 12-14 15:43 ?866次閱讀

    比利時(shí)研究機(jī)構(gòu)研發(fā)400Wh/L固態(tài)電池,兩小時(shí)內(nèi)充滿電!

    比利時(shí)研究開(kāi)發(fā)出一種能量密度為400Wh/L的固態(tài)電池,可在兩小時(shí)內(nèi)充滿電。
    的頭像 發(fā)表于 06-26 16:50 ?3501次閱讀

    片機(jī)實(shí)現(xiàn)延時(shí)兩種方法

    來(lái)源:大魚(yú)機(jī)器人 第一篇 實(shí)現(xiàn)延時(shí)通常有兩種方法:一種是硬件延時(shí),要用到定時(shí)器/計(jì)數(shù)器,這種方法可以提高CPU的工作效率,也能做到精確
    的頭像 發(fā)表于 09-11 14:29 ?3103次閱讀

    單片機(jī)實(shí)現(xiàn)延時(shí)兩種方法

    單片機(jī)系統(tǒng)一般常選用11.059 2 MHz、12 MHz或6 MHz晶振。第一種更容易產(chǎn)生各種標(biāo)準(zhǔn)的波特率,后種的一個(gè)機(jī)器周期分別為1 μs和2 μs,便于精確延時(shí)。本程序假設(shè)使用頻率為12 MHz的晶振。最長(zhǎng)的
    發(fā)表于 11-04 15:36 ?12次下載
    單片機(jī)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>延時(shí)</b><b class='flag-5'>兩種方法</b>

    STM32精確延時(shí)函數(shù)的實(shí)現(xiàn)

    與傳感器或者模塊的總線進(jìn)行通信的時(shí)候,常常需要使用到精確延時(shí),一般我們會(huì)封裝幾個(gè)常用延時(shí)函數(shù),下面我們以STM32F103芯片為例,詳細(xì)介紹一下S
    發(fā)表于 11-24 18:51 ?12次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>中</b>精確<b class='flag-5'>延時(shí)</b>函數(shù)的<b class='flag-5'>實(shí)現(xiàn)</b>

    STM32實(shí)現(xiàn)毫秒級(jí)精確延時(shí)方法

    使用MCU內(nèi)核寄存器實(shí)現(xiàn)毫秒級(jí)精確延時(shí)方法進(jìn)行STM32進(jìn)行開(kāi)發(fā)時(shí),使用到延時(shí)函數(shù)的頻率非常
    發(fā)表于 12-09 13:06 ?21次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>實(shí)現(xiàn)</b>毫秒級(jí)精確<b class='flag-5'>延時(shí)</b>的<b class='flag-5'>方法</b>

    stm32之HAL庫(kù)實(shí)現(xiàn)us延時(shí)方法

    stm32之HAL庫(kù)實(shí)現(xiàn)us延時(shí)方法HAL_Delay()源碼為ms級(jí)別的延時(shí)如下:/** * @brief This function provides accurate dela
    發(fā)表于 01-17 09:32 ?5次下載
    <b class='flag-5'>stm32</b>之HAL庫(kù)<b class='flag-5'>實(shí)現(xiàn)</b>us<b class='flag-5'>延時(shí)方法</b>

    電瓶修復(fù)技術(shù)—兩小時(shí)充滿電池可能嗎

    的效果,也就是2小時(shí)安全充電? 答:鉛酸蓄電池想要在2小時(shí)內(nèi)完全充滿,除非使用高恒壓值大電流,這樣會(huì)導(dǎo)致大量失水。 一般大功率脈沖充電保證失水可接受的程度下可以2
    發(fā)表于 03-29 14:23 ?2148次閱讀

    程序運(yùn)行在STM32H750的外擴(kuò)FLASH上兩小時(shí)后死機(jī)該如何處理

    程序運(yùn)行在 STM32H750 的外擴(kuò) FLASH 上兩小時(shí)后死機(jī)
    的頭像 發(fā)表于 10-24 15:20 ?2836次閱讀
    程序運(yùn)行在<b class='flag-5'>STM32</b>H750的外擴(kuò)FLASH上<b class='flag-5'>兩小時(shí)</b>后死機(jī)該如何處理