2026-05-22 11:36 AM - edited 2026-05-22 12:01 PM
Hello,
I am using the RTC wakeup from the power standby example provided in the STM32C5 repository. The example starts the RTC wake-up timer and places the device in standby mode. The device does go to standby, and it does wake up due to the RTC wakeup interrupt; however, the RTC initialization fails after wakeup. It is worth mentioning that the only way I can get rid of this error is to power cycle the board.
The failure happens in HAL_RTC_WAKEUP_SetConfig due to RTC_WaitSyncrhroWUTW() returning an error due to RTC_CR_WUTE being set.
static hal_status_t RTC_WaitSynchro_WUTW(void)
{
uint32_t tickstart;
if (LL_RTC_IsActiveFlag_INIT() == 0U)
{
if (LL_RTC_WAKEUP_IsEnabled() == 1U)
{
return HAL_ERROR; // Code returns this error
}
tickstart = HAL_GetTick();
while (LL_RTC_IsActiveFlag_WUTW() == 0U)
{
if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
{
if (LL_RTC_IsActiveFlag_WUTW() == 0U)
{
return HAL_ERROR;
}
}
}
}
return HAL_OK;
}To make the example work, I had to add a call to HAL_RTC_WAKEUP_Stop() before HAL_RTC_WAKEUP_SetConfig in mx_rtc.c.
HAL_RTC_WAKEUP_Stop(); // Added line of code
/* Configure wake-up timer */
hal_rtc_wakeup_config_t wakeup_config;
wakeup_config.clock = HAL_RTC_WAKEUP_TIMER_CLOCK_RTCCLK_DIV16;
if (HAL_RTC_WAKEUP_SetConfig(&wakeup_config) != HAL_OK)
{
return SYSTEM_PERIPHERAL_ERROR;
}
This does not seem to be the proper solution. Do you have any suggestions of how to address this issue?
I attached the .io2 file. The project runs on Nucleo-C562RE.
Thank you,
-Gil