cancel
Showing results for 
Search instead for 
Did you mean: 

Why the RTC reset when MCU reset ? (with VBAT still up and RTC_init cleaned)

PBoym.1
Associate II

CubeIDE : 1.7.0

CubeMX : 6.3

BSP : 1.12.1

chip : STM32WB55

I'm using the internal RTC of the STM32WB55. When the MCU is running the RTC works normally : the calendar can be set and the time is running correctly. When i shut the MCU power down (but still have the VBAT up), and turn it up again, the calendar of the RTC is reset.

I have cleaned the init generated by cubeMX and tried to use a light initialization (NVIC and clocks) when the backup register flag is set but nothing worked:

static void MX_RTC_Init(void)
{
  hrtc.Instance = RTC;
  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
  hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }
)

RTC config :

0693W00000UoMGpQAN.pngWhat should I have in my MX_RTC_Init() ?

Thanks,

3 REPLIES 3

> tried to use a light initialization (NVIC and clocks) when the backup register flag is set

​

Show.

​

Make sure there is no backup domain reset before that, e.g. related to LSE setup.

​

Or simply ditch Cube altogether and write your own program.​

​

JW​

I just did the same thing that HAL_RTC_MSpInit() does :

__HAL_RCC_RTC_ENABLE();
 __HAL_RCC_RTCAPB_CLK_ENABLE();
/* RTC interrupt Init */
HAL_NVIC_SetPriority(RTC_WKUP_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(RTC_WKUP_IRQn);
HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);