2025-05-27 11:45 PM
Hello STM32 Community,
I'm working with the STM32L4S5VIT6 microcontroller and implementing low power functionality using STOP2 mode.
I use a GPIO button (external interrupt) to enter STOP2 mode on the first press.
On the second press, I attempt to wake up the MCU and call low_power_off() to reinitialize peripherals and resume operation.
I’m using MSI as the system clock (no PLL), and STOP2 mode is entered with HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);.
Everything works as expected:
First button press → enters STOP2 via low_power_on().
Second press → wakes up and executes low_power_off() successfully.
First button press → MCU enters STOP2 mode.
Second button press does not wake up the MCU as expected.
It seems the EXTI interrupt is not firing in release mode, or the wakeup source isn't triggering properly.
EXTI configuration seems correct.
Wakeup pin is properly pulled up, and configured for falling edge.
SystemClock_Config() runs correctly on wakeup and reinitializes MSI.
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); and __HAL_GPIO_EXTI_CLEAR_IT() are used before STOP2.
Wakeup_Button_Init() is called both before entering STOP2 and after wakeup.
Please review my attached main.c code (which includes low_power_on() and low_power_off() logic).
Is there anything I might be missing or doing incorrectly that's causing this issue in Release Mode only?
Any suggestions to improve reliability or correctness of wakeup logic are very welcome.
Thank you!
2025-05-28 2:58 AM
Hello @Gohil,
Could you check the compiler optimizations, as the issue might be related to how the code is optimized in release mode compared to debug mode.
Check this related thread
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.