STM32電源管理

2021-09-07 02:46:21 字數 1829 閱讀 1595



(1)3時鐘模式

①睡眠模式②停止模式③待機模式

1.睡眠模式:cortex-m3核心(理解為cpu)停止工作,cpu供電1.8v有著,周邊任何執行。執行

2.停機模式:全部時鐘都停止,cpu電源1.8v沒斷。喚醒後從原來位置執行

3.待機模式:時鐘全斷,cpu電源1.8v也斷,喚醒後程式又一次執行

可形象參考:

cpu:皇上

cpu電源1.8v:皇后

外設:將軍

那麼:1.睡眠模式:僅僅有皇上睡覺

2.停機模式:皇上,將軍睡覺

3.待機模式:皇上,皇后。將軍全睡覺了

(原則:皇后不睡覺,程式可被保留,喚醒後從原來位置執行)

(二)程式簡單介紹(庫函式)

1.睡眠模式

while(1)                            

__wfi(); 進入睡眠模式,隨意中斷喚醒。喚醒後不用再配置時鐘

2.停止模式

①/*由於要使用其外設時鐘等。故需用到pwr*/

#include "stm32f10x_pwr.h"
②/*使能電源管理單元的時鐘*/

rcc_apb1periphclockcmd(rcc_apb1periph_pwr, enable);
③進入停止模式

pwr_enterstopmode(pwr_regulator_lowpower,pwr_stopentry_wfi);
④喚醒:外部中斷

由於將軍睡了,(及外設時鐘關了,因此須要又一次配置)喚醒後須要又一次啟動hse

sysclkconfig_stop(); 

void sysclkconfig_stop(void)

/* 選擇pll作為系統時鐘源*/

rcc_sysclkconfig(rcc_sysclksource_pllclk);

/*等待pll被選擇為系統時鐘源 */

while(rcc_getsysclksource() != 0x08)

}}

3.待機模式

①/*由於要使用其外設時鐘等,故需用到pwr*/

#include "stm32f10x_pwr.h"
②/*使能電源管理單元的時鐘*/

rcc_apb1periphclockcmd(rcc_apb1periph_pwr, enable);
③進入待機模式

/*使能wkup引腳的喚醒功能,wkup是第二功能。不用配置它的輸出模式(不是太懂)*/

pwr_wakeuppincmd (enable);

/*進入待機模式*/

pwr_enterstandbymode();

④喚醒,復位喚醒。pa0上公升沿喚醒

⑤檢測是復位喚醒還是pa0上公升沿喚醒

if(pwr_getflagstatus(pwr_flag_wu) == set)

else

printf("\r\n 其它\r\n");

由於待機喚醒程式從頭執行,故不用多加配置時鐘的函式了

狂人用腦子

STM32電源管理

1 3鐘模式 睡眠模式 停止模式 待機模式 1.睡眠模式 cortex m3核心 可理解成cpu 停止工作,cpu供電1.8v有,外設任在執行,喚醒後從原來位置執行 2.停機模式 所有時鐘都停止,cpu電源1.8v沒斷,喚醒後從原來位置執行 3.待機模式 時鐘全斷,cpu電源1.8v也斷,喚醒後程式...

STM32記憶體管理

這是我的第一篇文章,寫的不好請多多見諒 針對stm32f429來進行講解,其他型號的也可以參照學習 相信很多新手在記憶體管理這個程式中比較疑惑,為什麼分配那麼大,可不可以更改大小?但是改大了編譯會錯誤又是為什麼?這裡將對大家心中的疑惑進行講解,並且教大家進行計算。當該項值為 0 的時候,代表對應的記...

預熱2 什麼是STM32?認識STM32

1 什麼是stm32 stm32是由arm公司設計,意法半導體 st 公司生產的基於 arm cortex m 核心的32 位的mcu 系列。2 stm32能做什麼?stm32 屬於乙個微控制器,適用於控制類,自帶了各種常用通訊介面,比如 usart i2c spi 等,可接非常多的感測器,可以控制...