關於STM32L151使用HAL庫,進入standby模式與喚醒中的坑

背景:最近在用stm32L151做一個低功耗項目,經過一系列操作,終於將standby下功耗控制到了5.5uA。但是有個問題,使用WKup引腳喚醒之後,無法再次進入standby模式,而是直接復位。

再次經過一系列操作找到了關鍵點,如下:

1.

這兩個位硬件自動設置,當第一次進入standby模式,並喚醒後,這SBF和WUF被置位,但是hal庫的HAL_PWR_EnterSTANDBYMode();  函數並沒有對這兩位清零,所以導致後續進入standby模式後。立刻退出。

增加清除操作即可。代碼如下。

void EnterSTANDBYMode(void)
{
    PWR->CR|=1<<2;           //清除Wake-up 標誌
    PWR->CR|=1<<3;           //清除待機 標誌
    
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
    __HAL_RCC_PWR_CLK_ENABLE();
    HAL_PWR_EnterSTANDBYMode();
}

還有問題就是,不知道什麼原因,下載完程序要重新上電纔可以到達最低功耗。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章