(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 等,可接非常多的感測器,可以控制...