(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)3.待機模式/* 選擇pll作為系統時鐘源*/
rcc_sysclkconfig(rcc_sysclksource_pllclk);
/*等待pll被選擇為系統時鐘源 */
while(rcc_getsysclksource() != 0x08)
}}
①/*因為要使用其外設時鐘等,故需用到pwr*/
#include "stm32f10x_pwr.h"②/*使能電源管理單元的時鐘*/
rcc_apb1periphclockcmd(rcc_apb1periph_pwr, enable);③進入待機模式
/*使能wkup引腳的喚醒功能,wkup是第二功能,不用配置它的輸出模式(不是太懂)*/④喚醒,復位喚醒,pa0上公升沿喚醒pwr_wakeuppincmd (enable);
/*進入待機模式*/
pwr_enterstandbymode();
⑤檢測是復位喚醒還是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 等,可接非常多的感測器,可以控制...