實驗環境: 使用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();
}
}
.
.
.
}
沒有留言:
張貼留言