202#ifdef HAL_RTC_MODULE_ENABLED
274#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
285#if defined(RTC_TAMPER2_SUPPORT)
286 hrtc->Tamper2EventCallback = HAL_RTCEx_Tamper2EventCallback;
289 if (hrtc->MspInitCallback == NULL)
294 hrtc->MspInitCallback(hrtc);
296 if (hrtc->MspDeInitCallback == NULL)
327 hrtc->
Instance->CR &= ((uint32_t)~(RTC_CR_FMT | RTC_CR_OSEL | RTC_CR_POL));
389 hrtc->
Instance->DR = (RTC_DR_WDU_0 | RTC_DR_MU_0 | RTC_DR_DU_0);
391 hrtc->
Instance->WUTR = RTC_WUTR_WUT;
392 hrtc->
Instance->PRER = (uint32_t)(RTC_PRER_PREDIV_A | 0x000000FFU);
393 hrtc->
Instance->CALIBR = 0x00000000U;
394 hrtc->
Instance->ALRMAR = 0x00000000U;
395 hrtc->
Instance->ALRMBR = 0x00000000U;
397 hrtc->
Instance->SHIFTR = 0x00000000U;
398 hrtc->
Instance->ALRMASSR = 0x00000000U;
399 hrtc->
Instance->ALRMBSSR = 0x00000000U;
411 hrtc->
Instance->TAFCR = 0x00000000U;
413#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
414 if (hrtc->MspDeInitCallback == NULL)
420 hrtc->MspDeInitCallback(hrtc);
435#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
460 if (pCallback == NULL)
472 case HAL_RTC_ALARM_A_EVENT_CB_ID :
473 hrtc->AlarmAEventCallback = pCallback;
476 case HAL_RTC_ALARM_B_EVENT_CB_ID :
477 hrtc->AlarmBEventCallback = pCallback;
480 case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
481 hrtc->TimeStampEventCallback = pCallback;
484 case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
485 hrtc->WakeUpTimerEventCallback = pCallback;
488 case HAL_RTC_TAMPER1_EVENT_CB_ID :
489 hrtc->Tamper1EventCallback = pCallback;
492#if defined(RTC_TAMPER2_SUPPORT)
493 case HAL_RTC_TAMPER2_EVENT_CB_ID :
494 hrtc->Tamper2EventCallback = pCallback;
498 case HAL_RTC_MSPINIT_CB_ID :
499 hrtc->MspInitCallback = pCallback;
502 case HAL_RTC_MSPDEINIT_CB_ID :
503 hrtc->MspDeInitCallback = pCallback;
516 case HAL_RTC_MSPINIT_CB_ID :
517 hrtc->MspInitCallback = pCallback;
520 case HAL_RTC_MSPDEINIT_CB_ID :
521 hrtc->MspDeInitCallback = pCallback;
572 case HAL_RTC_ALARM_A_EVENT_CB_ID :
576 case HAL_RTC_ALARM_B_EVENT_CB_ID :
580 case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
584 case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
588 case HAL_RTC_TAMPER1_EVENT_CB_ID :
592#if defined(RTC_TAMPER2_SUPPORT)
593 case HAL_RTC_TAMPER2_EVENT_CB_ID :
594 hrtc->Tamper2EventCallback = HAL_RTCEx_Tamper2EventCallback;
598 case HAL_RTC_MSPINIT_CB_ID :
602 case HAL_RTC_MSPDEINIT_CB_ID :
616 case HAL_RTC_MSPINIT_CB_ID :
620 case HAL_RTC_MSPDEINIT_CB_ID :
708 uint32_t tmpreg = 0U;
723 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
739 (((uint32_t)sTime->
TimeFormat) << RTC_TR_PM_Pos));
743 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
755 tmpreg = (((uint32_t)(sTime->
Hours) << RTC_TR_HU_Pos) | \
756 ((uint32_t)(sTime->
Minutes) << RTC_TR_MNU_Pos) | \
757 ((uint32_t) sTime->
Seconds) | \
758 ((uint32_t)(sTime->
TimeFormat) << RTC_TR_PM_Pos));
773 hrtc->
Instance->CR &= (uint32_t)~RTC_CR_BKP;
822 uint32_t tmpreg = 0U;
837 sTime->
Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> RTC_TR_HU_Pos);
838 sTime->
Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >> RTC_TR_MNU_Pos);
839 sTime->
Seconds = (uint8_t)( tmpreg & (RTC_TR_ST | RTC_TR_SU));
840 sTime->
TimeFormat = (uint8_t)((tmpreg & (RTC_TR_PM)) >> RTC_TR_PM_Pos);
867 uint32_t datetmpreg = 0U;
880 sDate->
Month = (uint8_t)((sDate->
Month & (uint8_t)~(0x10U)) + (uint8_t)0x0AU);
894 ((uint32_t)sDate->
WeekDay << RTC_DR_WDU_Pos));
902 datetmpreg = ((((uint32_t)sDate->
Year) << RTC_DR_YU_Pos) | \
903 (((uint32_t)sDate->
Month) << RTC_DR_MU_Pos) | \
904 ((uint32_t) sDate->
Date) | \
905 (((uint32_t)sDate->
WeekDay) << RTC_DR_WDU_Pos));
956 uint32_t datetmpreg = 0U;
965 sDate->
Year = (uint8_t)((datetmpreg & (RTC_DR_YT | RTC_DR_YU)) >> RTC_DR_YU_Pos);
966 sDate->
Month = (uint8_t)((datetmpreg & (RTC_DR_MT | RTC_DR_MU)) >> RTC_DR_MU_Pos);
967 sDate->
Date = (uint8_t) (datetmpreg & (RTC_DR_DT | RTC_DR_DU));
968 sDate->
WeekDay = (uint8_t)((datetmpreg & (RTC_DR_WDU)) >> RTC_DR_WDU_Pos);
1014 uint32_t tickstart = 0U;
1015 uint32_t tmpreg = 0U;
1016 uint32_t subsecondtmpreg = 0U;
1036 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1068 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1091 tmpreg = (((uint32_t)(sAlarm->
AlarmTime.
Hours) << RTC_ALRMAR_HU_Pos) | \
1139 hrtc->
Instance->ALRMAR = (uint32_t)tmpreg;
1141 hrtc->
Instance->ALRMASSR = subsecondtmpreg;
1177 hrtc->
Instance->ALRMBR = (uint32_t)tmpreg;
1179 hrtc->
Instance->ALRMBSSR = subsecondtmpreg;
1213 uint32_t tmpreg = 0U;
1214 uint32_t subsecondtmpreg = 0U;
1234 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1266 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1289 tmpreg = (((uint32_t)(sAlarm->
AlarmTime.
Hours) << RTC_ALRMAR_HU_Pos) | \
1332 hrtc->
Instance->ALRMAR = (uint32_t)tmpreg;
1334 hrtc->
Instance->ALRMASSR = subsecondtmpreg;
1370 hrtc->
Instance->ALRMBR = (uint32_t)tmpreg;
1372 hrtc->
Instance->ALRMBSSR = subsecondtmpreg;
1407 uint32_t tickstart = 0U;
1505 uint32_t tmpreg = 0U;
1506 uint32_t subsecondtmpreg = 0U;
1516 tmpreg = (uint32_t)(hrtc->
Instance->ALRMAR);
1517 subsecondtmpreg = (uint32_t)((hrtc->
Instance->ALRMASSR) & RTC_ALRMASSR_SS);
1523 tmpreg = (uint32_t)(hrtc->
Instance->ALRMBR);
1524 subsecondtmpreg = (uint32_t)((hrtc->
Instance->ALRMBSSR) & RTC_ALRMBSSR_SS);
1528 sAlarm->
AlarmTime.
Hours = (uint8_t) ((tmpreg & (RTC_ALRMAR_HT | RTC_ALRMAR_HU)) >> RTC_ALRMAR_HU_Pos);
1529 sAlarm->
AlarmTime.
Minutes = (uint8_t) ((tmpreg & (RTC_ALRMAR_MNT | RTC_ALRMAR_MNU)) >> RTC_ALRMAR_MNU_Pos);
1530 sAlarm->
AlarmTime.
Seconds = (uint8_t) ( tmpreg & (RTC_ALRMAR_ST | RTC_ALRMAR_SU));
1533 sAlarm->
AlarmDateWeekDay = (uint8_t) ((tmpreg & (RTC_ALRMAR_DT | RTC_ALRMAR_DU)) >> RTC_ALRMAR_DU_Pos);
1569#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
1570 hrtc->AlarmAEventCallback(hrtc);
1587#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
1588 hrtc->AlarmBEventCallback(hrtc);
1624 uint32_t tickstart = 0U;
1634 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1688 uint32_t tickstart = 0U;
1697 while ((hrtc->
Instance->ISR & RTC_ISR_RSF) == 0U)
1718 SET_BIT(hrtc->
Instance->CR, RTC_CR_ADD1H);
1732 SET_BIT(hrtc->
Instance->CR, RTC_CR_SUB1H);
1746 SET_BIT(hrtc->
Instance->CR, RTC_CR_BKP);
1759 CLEAR_BIT(hrtc->
Instance->CR, RTC_CR_BKP);
1770 return READ_BIT(hrtc->
Instance->CR, RTC_CR_BKP);
1825 uint32_t tickstart = 0U;
1829 if (READ_BIT(hrtc->
Instance->ISR, RTC_ISR_INITF) == 0U)
1832 SET_BIT(hrtc->
Instance->ISR, RTC_ISR_INIT);
1838 while ((READ_BIT(hrtc->
Instance->ISR, RTC_ISR_INITF) == 0U) && (status !=
HAL_ERROR))
1863 CLEAR_BIT(hrtc->
Instance->ISR, RTC_ISR_INIT);
1866 if (READ_BIT(hrtc->
Instance->CR, RTC_CR_BYPSHAD) == 0U)
1886 uint32_t bcdhigh = 0U;
1888 while (number >= 10U)
1894 return ((uint8_t)(bcdhigh << 4U) | number);
1905 tens = (((uint32_t)number & 0xF0U) >> 4U) * 10U;
1906 return (uint8_t)(tens + ((uint32_t)number & 0x0FU));
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
void HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc)
void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc)
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
Wake Up Timer Event Callback in non blocking mode.
void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc)
#define RTC_ALARMDATEWEEKDAYSEL_DATE
#define RTC_ALARMMASK_ALL
HAL_StatusTypeDef HAL_RTC_DeInit(RTC_HandleTypeDef *hrtc)
void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc)
void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
ALARM A Event Callback in non blocking mode.
HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm)
HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format)
HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
void HAL_RTC_DST_Add1Hour(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc)
void HAL_RTC_DST_Sub1Hour(RTC_HandleTypeDef *hrtc)
uint32_t HAL_RTC_DST_ReadStoreOperation(RTC_HandleTypeDef *hrtc)
void HAL_RTC_DST_ClearStoreOperation(RTC_HandleTypeDef *hrtc)
void HAL_RTC_DST_SetStoreOperation(RTC_HandleTypeDef *hrtc)
HAL_RTCStateTypeDef HAL_RTC_GetState(RTC_HandleTypeDef *hrtc)
#define __HAL_RTC_ALARMB_DISABLE(__HANDLE__)
Disable the RTC ALARMB peripheral.
#define __HAL_RTC_ALARM_EXTI_ENABLE_IT()
Enable interrupt on the RTC Alarm associated EXTI line.
#define __HAL_RTC_ALARM_EXTI_CLEAR_FLAG()
Clear the RTC Alarm associated EXTI line flag.
#define __HAL_RTC_ALARM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)
Check whether the specified RTC Alarm interrupt has been enabled or not.
#define __HAL_RTC_ALARMA_DISABLE(__HANDLE__)
Disable the RTC ALARMA peripheral.
#define __HAL_RTC_ALARMA_ENABLE(__HANDLE__)
Enable the RTC ALARMA peripheral.
#define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the RTC Alarm's pending flags.
#define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE()
Enable rising edge trigger on the RTC Alarm associated EXTI line.
#define __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__)
Enable the write protection for RTC registers.
#define __HAL_RTC_ALARM_GET_FLAG(__HANDLE__, __FLAG__)
Get the selected RTC Alarm's flag status.
#define __HAL_RTC_ALARM_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the RTC Alarm interrupt.
#define __HAL_RTC_IS_CALENDAR_INITIALIZED(__HANDLE__)
Check whether the RTC Calendar is initialized.
#define __HAL_RTC_ALARMB_ENABLE(__HANDLE__)
Enable the RTC ALARMB peripheral.
#define __HAL_RTC_ALARM_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the RTC Alarm interrupt.
#define __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__)
Disable the write protection for RTC registers.
HAL_RTCStateTypeDef
HAL State structures definition.
#define IS_RTC_FORMAT(FORMAT)
#define IS_RTC_ALARM_MASK(MASK)
#define IS_RTC_OUTPUT_POL(POL)
#define IS_RTC_SYNCH_PREDIV(PREDIV)
#define IS_RTC_DATE(DATE)
#define IS_RTC_HOUR24(HOUR)
#define IS_RTC_DAYLIGHT_SAVING(SAVE)
#define IS_RTC_STORE_OPERATION(OPERATION)
#define IS_RTC_HOUR_FORMAT(FORMAT)
#define IS_RTC_OUTPUT_TYPE(TYPE)
#define IS_RTC_HOUR12(HOUR)
#define IS_RTC_MONTH(MONTH)
#define IS_RTC_MINUTES(MINUTES)
#define IS_RTC_ALARM_DATE_WEEKDAY_DATE(DATE)
#define IS_RTC_HOURFORMAT12(PM)
#define IS_RTC_ALARM(ALARM)
#define IS_RTC_OUTPUT(OUTPUT)
#define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(WEEKDAY)
#define IS_RTC_ASYNCH_PREDIV(PREDIV)
#define IS_RTC_ALARM_DATE_WEEKDAY_SEL(SEL)
#define IS_RTC_SECONDS(SECONDS)
#define IS_RTC_YEAR(YEAR)
#define IS_RTC_ALARM_SUB_SECOND_MASK(MASK)
#define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE)
#define IS_RTC_WEEKDAY(WEEKDAY)
#define RTC_OUTPUT_TYPE_PUSHPULL
#define RTC_DR_RESERVED_MASK
#define RTC_ISR_RESERVED_MASK
#define RTC_TIMEOUT_VALUE
#define RTC_TR_RESERVED_MASK
uint8_t RTC_ByteToBcd2(uint8_t number)
HAL_StatusTypeDef RTC_ExitInitMode(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef *hrtc)
uint8_t RTC_Bcd2ToByte(uint8_t number)
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
RTC Alarm structure definition.
RTC_TimeTypeDef AlarmTime
uint32_t AlarmDateWeekDaySel
uint32_t AlarmSubSecondMask
RTC Date structure definition.
RTC Handle Structure definition.
volatile HAL_RTCStateTypeDef State
RTC Time structure definition.