延時(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)。
比如說(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ù)里即可,這就很舒服…
審核編輯:劉清
-
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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論