接下來我們就詳細(xì)的看一下這三者有何區(qū)別。
1、睡眠(Sleep)模式
● 進(jìn)入睡眠模式
進(jìn)入睡眠模式有兩種指令:WFI(等待中斷)和WFE(等待事件)。根據(jù)Cortex-M內(nèi)核的SCR(系統(tǒng)控制)寄存器可以選擇使用立即休眠還是退出時(shí)休眠,當(dāng) SCR 寄存器的 SLEEPONEXIT(bit1)位為 0 的時(shí)候使用立即休眠,當(dāng)為 1的時(shí)候使用退出時(shí)休眠。
CMSIS(Cortex 微控制器軟件接口標(biāo)準(zhǔn))提供了兩個(gè)函數(shù)來操作指令 WFI 和 WFE,我們可以 直接使用這兩個(gè)函數(shù):__WFI和__WFE。FreeRTOS 系統(tǒng)會(huì)使用 WFI 指令進(jìn)入休眠模式。
● 退出休眠模式
如果使用 WFI 指令進(jìn)入休眠模式的話那么任意一個(gè)中斷都會(huì)將 MCU 從休眠模式中喚醒,如果使用 WFE指令進(jìn)入休眠模式的話那么當(dāng)有事件發(fā)生的話就會(huì)退出休眠模式,比如配置一個(gè) EXIT 線作為事件。
當(dāng) STM32F103 處于休眠模式的時(shí)候 Cortex-M3 內(nèi)核停止運(yùn)行,但是其他外設(shè)運(yùn)行正常,比如 NVIC、SRAM等。休眠模式的功耗比其他兩個(gè)高,但是休眠模式?jīng)]有喚醒延時(shí),應(yīng)用程序可以立即運(yùn)行。
2、停止(Stop)模式
停止模式基于 Cortex-M3 的深度休眠模式與外設(shè)時(shí)鐘門控,在此模式下 1.2V 域的所有時(shí)鐘都會(huì)停止,PLL、HSI 和 HSE RC振蕩器會(huì)被禁止,但是內(nèi)部 SRAM 的數(shù)據(jù)會(huì)被保留。調(diào)壓器可以工作在正常模式,也可配置為低功耗模式。如果有必要的話可以通過將 PWR_CR 寄存器的FPDS位置 1 來使 Flash 在停止模式的時(shí)候進(jìn)入掉電狀態(tài),當(dāng) Flash 處于掉電狀態(tài)的時(shí)候MCU從停止模式喚醒以后需要更多的啟動(dòng)延時(shí)。停止模式的進(jìn)入和退出如表所示:
3、待機(jī)(Standby)模式
相比于前面兩種低功耗模式,待機(jī)模式的功耗最低。待機(jī)模式是基于 Cortex-M3 的深度睡眠模式的,其中調(diào)壓器被禁止。1.2V 域斷電,PLL、HSI振蕩器和 HSE 振蕩器也被關(guān)閉。除了備份區(qū)域和待機(jī)電路相關(guān)的寄存器外,SRAM 和其他寄存器的內(nèi)容都將丟失。待機(jī)模式的進(jìn)入和退出如表所示:
退出待機(jī)模式的話會(huì)導(dǎo)致 STM32F1 重啟,所以待機(jī)模式的喚醒延時(shí)也是最大的。實(shí)際應(yīng)用中要根據(jù)使用環(huán)境和要求選擇合適的待機(jī)模式。
-
嵌入式
+關(guān)注
關(guān)注
5059文章
18975瀏覽量
302078 -
STM32
+關(guān)注
關(guān)注
2264文章
10854瀏覽量
354307 -
低功耗
+關(guān)注
關(guān)注
10文章
2352瀏覽量
103541 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
483瀏覽量
61918
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論