2025-11-13 12:11 PM
Hi everyone,
I'm new to STM32 solutions. My goal is to use the RTC Wake-Up Timer (WUT) to wake the MCU from Standby mode. I'm starting with a simple test:
The Problem: The MCU enters Standby, but it never wakes up.
I am calculating the WUT for ck_spre (256 Hz) as follows: wakeup_counter = 5 (seconds) * 256 (Hz) = 1280.
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_RTC_Init();
if (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
{
// LSE FAILED!
while (1)
{
//(error)
HAL_GPIO_WritePin (LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET);
HAL_Delay (100);
HAL_GPIO_WritePin (LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_RESET);
HAL_Delay (100);
}
}
uint32_t time_wkp_seg = 5;
uint32_t wakeup_counter = time_wkp_seg * 256;
if (__HAL_PWR_GET_FLAG(PWR_FLAG_SBF) != RESET)
{
// 1. Woke up from Standby
// 2. Get the state (e.g., a counter)
uint32_t wake_count = HAL_RTCEx_BKUPRead (&hrtc, RTC_BKP_DR0);
wake_count++;
// 3. Execute the wake-up task
HAL_GPIO_WritePin (LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_SET); // Turn on LED
HAL_Delay (50); // Keep it on for 50ms (to be visible)
HAL_GPIO_WritePin (LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_RESET); // Turn off LED
// 4. Save the new state
HAL_RTCEx_BKUPWrite (&hrtc, RTC_BKP_DR0, wake_count);
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
HAL_RTCEx_SetWakeUpTimer_IT (&hrtc, wakeup_counter, RTC_WAKEUPCLOCK_CK_SPRE_16BITS, 0);
}
else
{
// 5. It's a "cold" boot
// 6. Save the initial state
HAL_RTCEx_BKUPWrite (&hrtc, RTC_BKP_DR0, 0); // Start counter
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
HAL_RTCEx_SetWakeUpTimer_IT (&hrtc, wakeup_counter, RTC_WAKEUPCLOCK_CK_SPRE_16BITS, 0);
}
// --- Safety Clear BEFORE sleeping ---
__HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF);// Clear the RTC flag
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SBF); // Clear PWR flags
HAL_PWR_EnterSTANDBYMode ();
2025-11-17 2:10 AM
hello @maborbaa
I suspect that the issue is caused by an incorrect configuration.
You can refer to this firmware example, which implements the RTC and standby mode, to base your project on it.
Since you are new to STM32 solutions, you can consult this Wiki to learn more about low-power modes.
BR
Gyessine
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.
2025-12-05 11:39 PM
Hi @maborbaa ,
I learn that I need to enable the wakeup pin HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN7_HIGH_3);
for my RTC to wake up.
Also check your source of waking up. Look like you are using RTC. Are you running form LSE external 32KHz?
You can use this example as a reference since I have it working for my custom STM32WBA52 board.