cancel
Showing results for 
Search instead for 
Did you mean: 

STM32C031: No RTC SubSecond alarm interrupt, but works on calendar type alarms

FBERL.1
Associate

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

 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