延時功能,雖然簡單,不過不同的延時需求多了,就很頭疼。
在STM32中實(shí)現(xiàn)延時2小時的功能,有以下幾種方式:
1.使用延時函數(shù)
可以使用STM32提供的延時函數(shù)來實(shí)現(xiàn)延時功能,延時函數(shù)根據(jù)CPU時鐘頻率和延時時間計算出延時的時間,在延時期間CPU處于忙等待狀態(tài)。
需要注意的是,延時函數(shù)會占用過多的CPU資源,并且在延時期間無法執(zhí)行其他任務(wù)。
這種方式是初學(xué)者玩的,如果用到實(shí)際項(xiàng)目,除了大聰明,我找不到更好的詞夸你。
2.使用定時器和中斷
可以使用STM32內(nèi)置的定時器和中斷來實(shí)現(xiàn)延時功能。
將定時器配置為2小時的定時周期,并啟用定時器中斷。
在中斷處理函數(shù)中設(shè)置標(biāo)志位表示延時結(jié)束,并執(zhí)行相應(yīng)的操作。
需要注意的是,定時器中斷的頻率不能太高,否則會占用過多的系統(tǒng)資源,但中斷頻率也不能太慢,畢竟定時器是稀缺資源,一個定時器可能有很多不同的定時需求。
這個可能是最多人的選擇,畢竟省心、省成本。
3.使用RTC實(shí)時時鐘
可以使用STM32內(nèi)置的RTC實(shí)時時鐘模塊來實(shí)現(xiàn)延時功能。
將RTC設(shè)置為2小時的計時周期,并啟用RTC中斷。
在中斷處理函數(shù)中設(shè)置標(biāo)志位表示延時結(jié)束,并執(zhí)行相應(yīng)的操作。
需要注意的是,RTC的精度相對于定時器較高,但配置和使用上相對復(fù)雜。
我一般不會用這種,因?yàn)榕渲帽容^麻煩,我比較懶。
4.使用外部實(shí)時時鐘模塊
可以使用外部的實(shí)時時鐘模塊,如DS1302等,來實(shí)現(xiàn)延時功能。
將實(shí)時時鐘模塊連接到STM32的GPIO口,通過SPI或I2C等總線協(xié)議與STM32進(jìn)行通信,獲取當(dāng)前時間并計算出延時結(jié)束的時間。
需要注意的是,外部實(shí)時時鐘模塊的精度和配置相對于RTC更加復(fù)雜。
這種方式有點(diǎn)脫褲子放屁的感覺,還會增加硬件成本,不過有些場合確實(shí)需要這樣做,比如你看老板不爽,老板又不懂技術(shù)的時候。
5.無際原創(chuàng)的程序架構(gòu)
做了單片機(jī)開發(fā)10幾年,終于輪到我裝逼了,如果是我,我肯定用自己寫的輪詢架構(gòu)去實(shí)現(xiàn)。
比如說上面hal_LedProc這個任務(wù),不管我要定時多長時間去執(zhí)行,我只需要修改一個數(shù)值就可以。
比如2小時換算成ms就是7200000ms,任務(wù)Tick的時間是10ms,如果想讓hal_LedProc任務(wù)2小時執(zhí)行一次,那就設(shè)置成72000方可實(shí)現(xiàn)。
定時時間到了以后,需要執(zhí)行什么程序,直接放在hal_LedProc函數(shù)里即可,這就很舒服…
審核編輯:劉清
-
cpu
+關(guān)注
關(guān)注
68文章
11033瀏覽量
215978 -
STM32
+關(guān)注
關(guān)注
2289文章
11011瀏覽量
362341 -
延時函數(shù)
+關(guān)注
關(guān)注
0文章
25瀏覽量
10167 -
定時器中斷
+關(guān)注
關(guān)注
0文章
49瀏覽量
11424
原文標(biāo)題:stm32如何延時兩小時,用哪種方式好?
文章出處:【微信號:nanshuqg,微信公眾號:無際單片機(jī)編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
STM32單片機(jī)的延時原理和延時函數(shù)方法
stm32如何延時兩小時,用哪種方式好?
在MCU編程中STM32延時函數(shù)如何去實(shí)現(xiàn)
兩小時DIY速成 罐頭盒制作斯特林發(fā)動機(jī)

S7A驅(qū)動的兩小時破解工具_(dá)源程序
蘋果你這是在玩我們呢?AirPods 開售兩小時售罄
比利時研究機(jī)構(gòu)研發(fā)400Wh/L固態(tài)電池,兩小時內(nèi)充滿電!
片機(jī)實(shí)現(xiàn)延時的兩種方法
單片機(jī)實(shí)現(xiàn)延時兩種方法

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

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

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

評論