低功耗模式
本文討論下STM32低功耗模式,先看如下手冊。
對比了 STM32F0 和 STM32F1 兩者進入低功耗是一樣的,低功耗模式有三種:
睡眠模式,CM3 內核停止,外設仍然運行,此功耗是最高的
停止模式,所有時鐘都停止,此功耗較低,典型大概在20uA左右
待機模式,1.8V 內核電源關閉,此功耗最低,典型大概在2uA左右
一般做開發大多都是選擇停機模式,因為停機模式功耗較低,而且任一中斷或事件都能喚醒。待機模式雖然功耗最低,電流只差10個微安,但是只有特定的事件和引腳可以喚醒,實時性不是很好。
先來看下官方庫進入低功耗的方式。
void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry); //睡眠模式 void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); //停機模式 void PWR_EnterSTANDBYMode(void); //待機模式
這里我們用到停機模式,有兩個參數 。
第一個PWR_Regulator是選擇電源是否進入低功耗。
#definePWR_Regulator_ON//電源不進低功耗喚醒基本沒延遲 #define PWR_Regulator_LowPower //電源進去低功耗 不過喚醒啟動有一點延遲
第二個參數PWR_STOPEntry選擇喚醒的方式。
#define PWR_STOPEntry_WFI //中斷喚醒 #define PWR_STOPEntry_WFE //事件喚醒
停機模式喚醒后自動選擇系統內部時鐘,看自己的應用是否需要重新配置。如果你的系統時鐘是HSI或者HSE是要重新配置,一般都需要重新配置,直接調用系統時鐘配置函數。
另外停機模式喚醒后,flash程序是從中斷或事件開始執行的。
如何做到停機模式更低功耗
代碼
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //使能時鐘 PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
上面代碼第一個參數PWR_Regulator_LowPower是配置電源低功耗模式。第二個參數PWR_STOPEntry_WFI用來確定是中斷喚醒還是事件喚醒,或者兩者都要。
第二步你要把所有引腳IO口釋放,全部配置成模擬輸入狀態,此時IO口幾乎0消耗,具體見手冊說明。
我們只要在進入低功耗之前把IO口配置一下就行了(根據自己應用需要配置IO),但是喚醒之后就要重新配置IO口了。
注意,在配置IO模擬輸入之前,一定不要鎖定IO口。我之前就踩了這個坑,在配置成模擬輸入之前我們串口兩個引腳鎖定了導致我的功耗一直在90uA左右下不去。
正確配置的功耗在10uA左右,這功耗已經相當低了,用四節5號電池夠你用至少1年了。
-
內核
+關注
關注
3文章
1382瀏覽量
40371 -
STM32
+關注
關注
2270文章
10923瀏覽量
357035 -
時鐘
+關注
關注
11文章
1746瀏覽量
131673 -
低功耗
+關注
關注
10文章
2418瀏覽量
103837
原文標題:STM32低功耗模式
文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論