@@ -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