一般在系統或電源復位後,mcu在執行狀態下由hclk為cpu提供時鐘,核心執行**,當cpu不需要執行時可利用多種低功耗模式來節省功耗,等待某事件觸發時才喚醒
stm32f4xx有三種低功耗模式
睡眠模式
僅核心停止,外設如nvic、systick等仍執行
停止模式
所有時鐘停止,1.8v核心電源工作,備份暫存器、待機電路等都有供電,暫存器、sram資料保留
待機模式
1.8v核心電源關閉,僅有備份暫存器和待機電路維持供電,暫存器、sram清空,功耗最低
執行模式下,也可通過降低系統時鐘和關閉未被使用的外設時鐘來降低功耗
嵌入式線性調壓器為除備份域和待機電路外所有數位電路供電,需要連線兩個外部電容到專用引腳vca
p_1v_
vcap_1
和vcap
_2
v_vc
ap_2
為啟用和停用調壓器,需要將特定引腳連線到vss或vdd,具體引腳由封裝決定
模式進入
喚醒對1.2v域時鐘的影響
對vdd域時鐘的影響
調壓器睡眠
wfi/wfe
任意中斷/喚醒事件
cpu clk關閉,其他無影響無開啟
停止pdds位和lpds位+sleepdeep位+wfi/wfe
任意exti線(可在exti暫存器中配置,包括內部線和外部線)
全部關閉
hsi、hse關閉
開啟或處於低功耗模式
待機pdds位+sleepdeep位+wfi/wfe
wkup引腳上公升沿、rtc鬧鐘(a或b)、rtc喚醒事件、rtc入侵事件、rtc時間戳事件、nrst引腳外部復位、iwdg復位
全部關閉
hsi、hse關閉
關閉wfi置位可用任意中斷喚醒
wfe置位可用喚醒事件喚醒
理想狀態下,待機模式只需要2.2ua電流,典型電流為350ua
使能了rtc鬧鐘中斷或rtc週期性喚醒等中斷時,進入待機模式前,必須進行以下處理:
禁止rtc中斷
清零對應中斷標誌位
清除pwr喚醒(wuf)標誌(通過設定pwr_cr->cwuf位實現)
重新使能rtc對應中斷
進入低功耗模式
詳情參考stm32f4xx晶元手冊
注意:使用前需引入stm32f4xx_pwr.c庫檔案
進入待機配置步驟:
使能電源時鐘
關閉rtc相關中斷
設定wk_up引腳為喚醒源
設定sleepdeep位、pdds位、執行wfi指令,進入待機模式
wkup.h
#ifndef __wkup_h
#define __wkup_h
#include
"sys.h"
u8 check_wkup
(void);
//檢測wkup腳訊號
void
wkup_enter_standbymode
(void);
//系統進入待機模式
void
wkup_init
(void);
//待機喚醒初始化
#endif
wkup.c
#include
"wkup.h"
#include
"delay.h"
//檢測wkup腳訊號
//返回1:連續按下3s以上;返回0:錯誤的觸發(連按3s以下)
u8 check_wkup
(void
)else
delay_ms(30
);if(t>=
100)
//按下超過3s
return1;
}}/*此函式效率較低,可使用定時器來重寫*/
//系統進入待機模式
void
wkup_enter_standbymode
(void
)//以pa0為待機喚醒引腳,進行wkup喚醒初始化
void
wkup_init
(void
)//中斷線0-pa0中斷服務函式
//上公升沿觸發,用於正常執行狀態進入待機模式
void
exti0_irqhandler
(void
)
main.c
此程式為待機喚醒的演示
如果用了上面的「長按3s進入待機模式」**,則main檔案內應當放入日常執行的程式
int
main
(void)}
}
STM32F4外設配置速查 RTC部分
2個32位暫存器包含bcd格式的second minute hour 12 24小時制 day week month year 還可以提供二進位制的亞秒值 系統可自動將月份天數補償位28 29 30 31天,還可以進行夏令時補償 時鐘源 由rtc calr精密校準過的lse 32.768khz 時鐘...
STM32F4外設配置速查 DMA部分
dma即direct memory access 直接儲存器訪問 將資料從乙個位址複製到另乙個位址,當cpu初始化dma控制器後,傳輸動作由dma控制器實現和完成 優點 無需cpu控制 或 中斷壓棧 出棧過程,讓ram與io裝置間可快速傳輸資料,減少cpu負載 雙ahb匯流排,乙個用於儲存器訪問,乙...
STM32F4外設配置速查 FPU與DSP部分
詳細內容參考cortex m4核心程式設計手冊 stm32f4xx及更高配置stm32微控制器才有fpu支援 stm32f4帶有32位單精度硬體fpu,支援浮點指令集,整個fpu單元能被使能和關閉 使用協處理器控制暫存器 scb cpacr 中的cp11和cp10啟用 關閉fpu 晶元復位後,cp1...