stm32的低功耗模式:


一.待機模式.待機模式是低功耗中最低功耗的,內部電壓調節電路被關閉,  HSE、HISPLL被關閉;進入待機模式后,SRAM和寄存器的內容將丟失。  (CPU停止,外設停止,RAM的數據寄存器的內容丟失

 

1.特點:SRAM和寄存器的內容會丟失。外設不供電,只有CPU的備用電源在運行

 

2.喚醒條件:NRTS的外部復位信號,IWDG復位、WKUP引腳上的一個上升邊沿或者RTC鬧鍾。喚醒后相當於軟重啟使系統復位。

3.使用步驟:

3.1 #include <stm32f10x_pwr.h>
void Standby_Config(void)
{
    // 使能PWR時鍾與BKP時鍾
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
    //使能后備寄存器訪問
    PWR_BackupAccessCmd(ENABLE);
    // 使能WKUP引腳
    PWR_WakeUpPinCmd(ENABLE);
    // 檢測Standby標志位
    if(PWR_GetFlagStatus(PWR_FLAG_SB) != RESET)
    {
        printf("\r\n從待機模式退出\r\n");
        //清除Standby標志位
        PWR_ClearFlag(PWR_FLAG_SB);
    }
    else
    {
        printf("\r\n從運行模式復位\r\n");
    }
}

3.2 進入睡眠模塊。PWR_EnterSTANDBYMode();//使能待機模式

3.3 滿足喚醒條件,進入軟重啟!

二 睡眠模式:相當於中場休息。退出睡眠后還得做好恢復退出時的狀態(初始化系統時鍾即可)

2.1特點:只有CPU停止工作,所有外設處於工作狀態,SRAM和寄存器的內容保持不變。

2.2.喚醒條件:所以的外部中斷,包括RTC中斷.喚醒后需要初始化系統時鍾

2.3使用步驟:

2.3.1 在干完必須得工作后,通過    __WFI();//進入睡眠模式,后面的代碼不執行

2.3.2 喚醒條件發生,比如外中斷發生,在中斷服務程中通過調用Stop_SysClkConfing()函數退出睡眠模塊,執行__WFI()后面的功能。Stop_SysClkConfing()實際上就是重新初始化系統時鍾即調用SystemInit()。

三 停止模式:相當於深度睡眠,放長假,比“”中場休息(睡眠模塊)“”的時間長

3.1特點:停止內部1.8V供電,HSE、HISPLL時鍾被關閉CPU時鍾停止,外設全部不工作;只有CPU內存工作,數據不丟失。

3.2喚醒條件:任意的外部中斷,RTC鬧鍾,PVD輸出,USB喚醒條件。

3.3時鍾步驟:與睡眠模式的操作基本相同唯一區別就是進入睡眠時調用的函數不一樣,停止模式調用的是以下函數

PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

四 RTC定時中斷:
STM32L152 RTC 日歷和定時中斷使用 https://blog.csdn.net/jnu_fangzebin/article/details/51543506

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM