prettyprint

2020年10月2日 星期五

STM32F103C8T6 進入 Low Power Mode與WakeUp 實驗備忘

實驗環境: 使用STM32CubeIDE與HAL functions

Q1.為何在Low Power mode下,無法透過GPIO EXTI wake-up?
A1:
  1. HAL_PWR_EnterSTOPMode,HAL_PWR_EnterSLEEPMode不可在callback function中呼叫,否則無法透過EXTI wake-up
  2. 在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(); } }   .     .     . }

沒有留言:

張貼留言