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