1、如何降低功耗?
一般的簡(jiǎn)單應(yīng)用中處理器大量的時(shí)間都在處理空閑任務(wù),所以我們就可以考慮當(dāng)處理器處理空閑任務(wù)的時(shí)候就進(jìn)入低功耗模式,當(dāng)需要處理應(yīng)用層代碼的時(shí)候就將處理器從低功耗模式喚醒。FreeRTOS 就是通過在處理器處理空閑任務(wù)的時(shí)候?qū)⑻幚砥髟O(shè)置為低功耗模式來降低能耗。一般會(huì)在空閑任務(wù)的鉤子函數(shù)中執(zhí)行低功耗相關(guān)處理,比如設(shè)置處理器進(jìn)入低功耗模式、關(guān)閉其他外設(shè)時(shí)鐘、降低系統(tǒng)主頻等等。
我們知道 FreeRTOS 的系統(tǒng)時(shí)鐘是由滴答定時(shí)器中斷來提供的,系統(tǒng)時(shí)鐘頻率越高,那么滴答定時(shí)器中斷頻率也就越高。以前講過,中斷是可以將 STM32F103 從睡眠模式中喚醒,周期性的滴答定時(shí)器中斷就會(huì)導(dǎo)致 STM32F103 周期性的進(jìn)入和退出睡眠模式。因此,如果滴答定時(shí)器中斷頻率太高的話會(huì)導(dǎo)致大量的能量和時(shí)間消耗在進(jìn)出睡眠模式中,這樣導(dǎo)致的結(jié)果就是低功耗模式的作用被大大的削弱。
為此,F(xiàn)reeRTOS 特地提供了一個(gè)解決方法——Tickless 模式,當(dāng)處理器進(jìn)入空閑任務(wù)周期以后就關(guān)閉系統(tǒng)節(jié)拍中斷(滴答定時(shí)器中斷),只有當(dāng)其他中斷發(fā)生或者其他任務(wù)需要處理的時(shí)候處理器才會(huì)被從低功耗模式中喚醒。為此我們將面臨兩個(gè)問題:
問題一:關(guān)閉系統(tǒng)節(jié)拍中斷會(huì)導(dǎo)致系統(tǒng)節(jié)拍計(jì)數(shù)器停止,系統(tǒng)時(shí)鐘就會(huì)停止。
FreeRTOS 的系統(tǒng)時(shí)鐘是依賴于系統(tǒng)節(jié)拍中斷(滴答定時(shí)器中斷)的,如果關(guān)閉了系統(tǒng)節(jié)拍中斷的話就會(huì)導(dǎo)致系統(tǒng)時(shí)鐘停止運(yùn)行,這是絕對(duì)不允許的!該如何解決這個(gè)問題呢?我們可以記錄下系統(tǒng)節(jié)拍中斷的關(guān)閉時(shí)間,當(dāng)系統(tǒng)節(jié)拍中斷再次開啟運(yùn)行的時(shí)候補(bǔ)上這段時(shí)間就行了。這時(shí)候我們就需要另外一個(gè)定時(shí)器來記錄這段該補(bǔ)上的時(shí)間,如果使用專用的低功耗處理器的話基本上都會(huì)有一個(gè)低功耗定時(shí)器,比如 STM32L4 系列(L 系列是 ST 的低功耗處理器)就有一個(gè)叫做 LPTIM(低功耗定時(shí)器)的定時(shí)器。STM32F103 沒有這種定時(shí)器那么就接著使用滴答定時(shí)器來完成這個(gè)功能,具體實(shí)現(xiàn)方法后面會(huì)講解。
問題二:如何保證下一個(gè)要運(yùn)行的任務(wù)能被準(zhǔn)確的喚醒?
即使處理器進(jìn)入了低功耗模式,但是我的中斷和應(yīng)用層任務(wù)也要保證及時(shí)的響應(yīng)和處理。中斷自然不用說,本身就可以將處理器從低功耗模式中喚醒。但是應(yīng)用層任務(wù)就不行了,它無法將處理器從低功耗模式喚醒,無法喚醒就無法運(yùn)行!這個(gè)問題看來很棘手,既然應(yīng)用層任務(wù)無法將處理器從低功耗模式喚醒,那么我們就借助其他的力量來完成這個(gè)功能。如果處理器在進(jìn)入低功耗模式之前能夠獲取到還有多長(zhǎng)時(shí)間運(yùn)行下一個(gè)任務(wù)那么問題就迎刃而解了,我們只需要開一個(gè)定時(shí)器,定時(shí)器的定時(shí)周期設(shè)置為這個(gè)時(shí)間值就行了,定時(shí)時(shí)間到了以后產(chǎn)生定時(shí)中斷,處理器不就從低功耗模式喚醒了。這里似乎又引出了一個(gè)新的問題,那就是如何知道還有多長(zhǎng)時(shí)間執(zhí)行下一個(gè)任務(wù)?這個(gè)時(shí)間也就是低功耗模式的執(zhí)行時(shí)間,值得慶辛的是 FreeRTOS已經(jīng)幫我們完成了這個(gè)工作。
-
處理器
+關(guān)注
關(guān)注
68文章
19882瀏覽量
234931 -
嵌入式
+關(guān)注
關(guān)注
5149文章
19651瀏覽量
317145 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
492瀏覽量
64249
發(fā)布評(píng)論請(qǐng)先 登錄
降低電路漏電功耗的低功耗設(shè)計(jì)方法

cogobuy降低功耗的措施
第30章 FreeRTOS低功耗之睡眠模式
第31章 FreeRTOS低功耗之停機(jī)模式
第33章 FreeRTOS低功耗之tickless模式
RTOS低功耗設(shè)計(jì)原理及實(shí)現(xiàn)_TicklessMode(FreeRTOS的實(shí)現(xiàn))
請(qǐng)問stm32不進(jìn)入低功耗模式怎么降低功耗?
如何利用FPGA滿足電信應(yīng)用中的降低功耗要求?
如何降低ZC發(fā)現(xiàn)網(wǎng)絡(luò)的頻次以降低功耗?
AT32 FreeRTOS基礎(chǔ)例程(包含低功耗功能)
關(guān)于FreeRTOS低功耗的問題
STM32與FreeRTOS實(shí)現(xiàn)低功耗

評(píng)論