系列文章
FreeRTOS實(shí)時操作系統(tǒng)(一)RTOS的基本概念
FreeRTOS實(shí)時操作系統(tǒng)(二)任務(wù)創(chuàng)建與任務(wù)刪除(HAL庫)
FreeRTOS實(shí)時操作系統(tǒng)(三)任務(wù)掛起與恢復(fù)
FreeRTOS實(shí)時操作系統(tǒng)(四)中斷任務(wù)管理
FreeRTOS實(shí)時操作系統(tǒng)(五)進(jìn)入臨界區(qū)、任務(wù)調(diào)度器掛起與恢復(fù)
FreeRTOS實(shí)時操作系統(tǒng)(六)列表與列表項(xiàng)
FreeRTOS實(shí)時操作系統(tǒng)(七)時間片調(diào)度及RTOS的滴答定時器
FreeRTOS實(shí)時操作系統(tǒng)(八)任務(wù)狀態(tài)查詢及時間統(tǒng)計(jì)函數(shù)
FreeRTOS實(shí)時操作系統(tǒng)(九)時間延時函數(shù)及消息隊(duì)列
FreeRTOS實(shí)時操作系統(tǒng)(十)信號量
FreeRTOS實(shí)時操作系統(tǒng)(十一)隊(duì)列集
FreeRTOS實(shí)時操作系統(tǒng)(十二)事件標(biāo)志組
FreeRTOS實(shí)時操作系統(tǒng)(十三)任務(wù)通知
FreeRTOS實(shí)時操作系統(tǒng)(十四)軟件定時器
FreeRTOS實(shí)時操作系統(tǒng)(十五)Tickless低功耗模式
FreeRTOS實(shí)時操作系統(tǒng)(十六)內(nèi)存管理
低功耗模式
在之前的邏輯開發(fā)中學(xué)習(xí)過STM32的低功耗模式,在FreeRTOS中的低功耗模式,方便操作系統(tǒng)進(jìn)入低功耗模式。
stm32中的低功耗模式:
Tickless低功耗模式
本質(zhì)是調(diào)用指令WFI實(shí)現(xiàn)睡眠模式,在在整個系統(tǒng)的運(yùn)行過程中,其實(shí)大部分時間是在執(zhí)行空閑任務(wù)的,所以在空閑的時候進(jìn)入低功耗,在其他任務(wù)準(zhǔn)備運(yùn)行的時候再退出低功耗模式。
運(yùn)行方式:
進(jìn)入低功耗后,獲取到下一個任務(wù)的進(jìn)入時間,就設(shè)置低功耗的退出時間,為了防止滴答定時器的中斷喚醒MCU,頻繁中斷影響效果,將滴答定時器的中斷周期修改為低功耗的運(yùn)行時間,退出低功耗模式后,再補(bǔ)上節(jié)拍數(shù)
宏定義配置
configUSE_TICKLESS_IDLE
此宏用于使能低功耗 Tickless 模式
configEXPECTED_IDLE_TIME_BEFORE_SLEEP
此宏用于定義系統(tǒng)進(jìn)入相應(yīng)低功耗模式的最短時長(>1)
configPRE_SLEEP_PROCESSING(x)
此宏用于定義需要在系統(tǒng)進(jìn)入低功耗模式前執(zhí)行的事務(wù),如:進(jìn)入低功耗前關(guān)閉外設(shè)時鐘,以達(dá)到降低功耗的目的
configPOSR_SLEEP_PROCESSING(x)
此宏用于定義需要在系統(tǒng)退出低功耗模式后執(zhí)行的事務(wù),如:退出低功耗后開啟之前關(guān)閉的外設(shè)時鐘,以使系統(tǒng)能夠正常運(yùn)行
實(shí)驗(yàn)測試
開啟宏定義
默認(rèn)事件設(shè)置:
需要對這兩個函數(shù)重新定義:在文件中,如果對這兩個宏沒有定義的話會自己定義,所以我們需要提前定義,編譯器就會自動識別為我們定義的函數(shù)。
在開頭直接提前定義
在main文件中記得包含該文件;
設(shè)置進(jìn)入休眠后我們的操作即可;還可以關(guān)閉其他的外設(shè)來降低功耗文章來源:http://www.zghlxwxcb.cn/news/detail-568479.html
代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-568479.html
#define configPRE_SLEEP_PROCESSING( x ) PRE_SLEEP_PROCESSING()
#define configPOST_SLEEP_PROCESSING( x ) POST_SLEEP_PROCESSING()
/* 進(jìn)入低功耗前所需要執(zhí)行的操作 */
void PRE_SLEEP_PROCESSING(void)
{
__HAL_RCC_GPIOA_CLK_DISABLE();
__HAL_RCC_GPIOB_CLK_DISABLE();
__HAL_RCC_GPIOC_CLK_DISABLE();
__HAL_RCC_GPIOD_CLK_DISABLE();
}
/* 退出低功耗后所需要執(zhí)行的操作 */
void POST_SLEEP_PROCESSING(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
}
到了這里,關(guān)于FreeRTOS實(shí)時操作系統(tǒng)(十五)Tickless低功耗模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!