@@ -388,6 +388,72 @@ void LowPower_EnableWakeUpPin(uint32_t pin, uint32_t mode)
388388      HAL_PWR_EnableWakeUpPin (wkup_pin , ((mode  ==  RISING ) ||  (mode  ==  HIGH )) ? PWR_WUP_FALLEDG  : PWR_WUP_RISIEDG );
389389    }
390390  }
391+ #elif  defined(PWR_WAKEUP_PORTA )
392+   /* Get GPIO port from pinname*/ 
393+   GPIO_TypeDef  * port  =  get_GPIO_Port (STM_PORT (p ));
394+   uint32_t  wkup_pin  =  0 ;
395+   uint32_t  wkup_port  =  0 ;
396+   switch  (STM_PIN (p )) {
397+     case  0 :
398+       wkup_pin  =  PWR_WAKEUP_PIN0 ;
399+       break ;
400+     case  1 :
401+       wkup_pin  =  PWR_WAKEUP_PIN1 ;
402+       break ;
403+     case  2 :
404+       wkup_pin  =  PWR_WAKEUP_PIN2 ;
405+       break ;
406+     case  3 :
407+       wkup_pin  =  PWR_WAKEUP_PIN3 ;
408+       break ;
409+     case  4 :
410+       wkup_pin  =  PWR_WAKEUP_PIN4 ;
411+       break ;
412+     case  5 :
413+       wkup_pin  =  PWR_WAKEUP_PIN5 ;
414+       break ;
415+     case  6 :
416+       wkup_pin  =  PWR_WAKEUP_PIN6 ;
417+       break ;
418+     case  7 :
419+       wkup_pin  =  PWR_WAKEUP_PIN7 ;
420+       break ;
421+     case  8 :
422+       wkup_pin  =  PWR_WAKEUP_PIN8 ;
423+       break ;
424+     case  9 :
425+       wkup_pin  =  PWR_WAKEUP_PIN9 ;
426+       break ;
427+     case  10 :
428+       wkup_pin  =  PWR_WAKEUP_PIN10 ;
429+       break ;
430+     case  11 :
431+       wkup_pin  =  PWR_WAKEUP_PIN11 ;
432+       break ;
433+     case  12 :
434+       wkup_pin  =  PWR_WAKEUP_PIN12 ;
435+       break ;
436+     case  13 :
437+       wkup_pin  =  PWR_WAKEUP_PIN13 ;
438+       break ;
439+     case  14 :
440+       wkup_pin  =  PWR_WAKEUP_PIN14 ;
441+       break ;
442+     case  15 :
443+       wkup_pin  =  PWR_WAKEUP_PIN15 ;
444+       break ;
445+     default :
446+       port  =  NULL ;
447+       break ;
448+   }
449+   if  (port  ==  (GPIO_TypeDef  * )GPIOA_BASE ) {
450+     wkup_port  =  PWR_WAKEUP_PORTA ;
451+   } else  if  (port  ==  (GPIO_TypeDef  * )GPIOB_BASE ) {
452+     wkup_port  =  PWR_WAKEUP_PORTB ;
453+   }
454+   if  (IS_PWR_WAKEUP_SOURCE (wkup_pin )) {
455+     HAL_PWR_EnableWakeUpPin (wkup_port , wkup_pin , ((mode  ==  RISING ) ||  (mode  ==  HIGH )) ? PWR_WUP_FALLEDG  : PWR_WUP_RISIEDG );
456+   }
391457#else 
392458#if  !defined(PWR_WAKEUP_PIN1_HIGH )
393459  UNUSED (mode );
@@ -701,7 +767,7 @@ void LowPower_stop(serial_t *obj)
701767    HAL_UARTEx_EnableStopMode (WakeUpUart );
702768  }
703769#endif 
704- #if  defined(STM32WB0x )
770+ #if  defined(STM32WB0x )  ||  defined( STM32WL3x ) 
705771  __HAL_PWR_CLEAR_FLAG (PWR_FLAG_DEEPSTOPF );
706772  __HAL_PWR_CLEAR_FLAG (PWR_FLAG_WU );
707773  PWR_DEEPSTOPTypeDef  configDEEPSTOP ;
@@ -812,7 +878,7 @@ void LowPower_stop(serial_t *obj)
812878  */ 
813879void  LowPower_standby ()
814880{
815- #if  !defined(STM32WB0x )
881+ #if  !defined(STM32WB0x )  &&  !defined( STM32WL3x ) 
816882  __disable_irq ();
817883
818884  /* Clear wakeup flags */ 
@@ -844,7 +910,7 @@ void LowPower_standby()
844910  LL_C2_PWR_SetPowerMode (LL_PWR_MODE_STANDBY );
845911#endif 
846912  HAL_PWR_EnterSTANDBYMode ();
847- #endif  /* !STM32WB0x */ 
913+ #endif  /* !STM32WB0x || STM32WL3x  */ 
848914}
849915
850916/** 
0 commit comments