cancel
Showing results for 
Search instead for 
Did you mean: 

RTC SubSecond does not generate an interrupt with an STM32C031. Interrupt works perfectly on calendar type alarms. I work in LSE at 32768KHz, divider 127 and 255

FBERL.1
Associate

RTC_TimeTypeDef sTime = {0};

 RTC_DateTypeDef sDate = {0};

 RTC_AlarmTypeDef sAlarm = {0};

 /* USER CODE BEGIN RTC_Init 1 */

 /* USER CODE END RTC_Init 1 */

 /** Initialize RTC Only

 */

 hrtc.Instance = RTC;

 hrtc.Init.HourFormat = RTC_HOURFORMAT_24;

 hrtc.Init.AsynchPrediv = 127;

 hrtc.Init.SynchPrediv = 255;

 hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;

 hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;

 hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;

 hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;

 hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE;

 if (HAL_RTC_Init(&hrtc) != HAL_OK)

 {

  Error_Handler();

 }

 /* USER CODE BEGIN Check_RTC_BKUP */

 /* USER CODE END Check_RTC_BKUP */

 /** Initialize RTC and set the Time and Date

 */

 sTime.Hours = 9;

 sTime.Minutes = 35;

 sTime.Seconds = 30;

 sTime.SubSeconds = 0;

 sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;

 sTime.StoreOperation = RTC_STOREOPERATION_RESET;

 if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)

 {

  Error_Handler();

 }

 sDate.WeekDay = RTC_WEEKDAY_TUESDAY;

 sDate.Month = RTC_MONTH_MARCH;

 sDate.Date = 28;

 sDate.Year = 23;

 if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)

 {

  Error_Handler();

 }

 /** Enable the Alarm A

 */

 sAlarm.AlarmTime.Hours = 9;

 sAlarm.AlarmTime.Minutes = 36;

 sAlarm.AlarmTime.Seconds = 0;

 sAlarm.AlarmTime.SubSeconds = 0;

 sAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;

 sAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;

 sAlarm.AlarmMask = RTC_ALARMMASK_NONE;

 sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_SS14_2;

 sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_WEEKDAY;

 sAlarm.AlarmDateWeekDay = RTC_WEEKDAY_TUESDAY;

 sAlarm.Alarm = RTC_ALARM_A;

 if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BIN) != HAL_OK)

 {

  Error_Handler();

 }

2 REPLIES 2
Diane POMABIA
ST Employee

Hi @FBERL.1​ 

Do you have Configure the NVIC for RTC Alarm in you code ?

If it's not case please add this config after your set Alarm Function.

Regards

DianeP

FBERL.1
Associate

Thank you for your answer, I solved my problem