實驗環境: 使用STM32CubeIDE與HAL functions
Q1.為何在Low Power mode下,無法透過GPIO EXTI wake-up?A1:
- HAL_PWR_EnterSTOPMode,HAL_PWR_EnterSLEEPMode不可在callback function中呼叫,否則無法透過EXTI wake-up
- 在callback function 中設定flag於 main while(1) loop中check flag並啟動 low power mode,則可順利由low power mode中順利喚醒。
int main(void) { . . . /* USER CODE BEGIN 2 */ enterSTOPMode=0; /* USER CODE END 2 */ . . . while (1) { if(enterSTOPMode)
{ enterSTOPMode=0;
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); } } . . . }
Q2.為何HAL_PWR_EnterSTANDBYMode使用PA0 pin喚醒後無法再一次進入STANDBY mode?
A2:
呼叫HAL_PWR_EnterSTANDBYMode前必須先CLEAR FLAG。以下順序呼叫
int main(void) { . . . /* USER CODE BEGIN 2 */ enterStandbyMode=0; /* USER CODE END 2 */ . . . while (1) { if(enterStandbyMode)
{ enterStandbyMode=0;
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); HAL_PWR_EnterSTANDBYMode(); } } . . . }
沒有留言:
張貼留言