196#ifdef HAL_RTC_MODULE_ENABLED
268#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
279#if defined(RTC_TAMPER2_SUPPORT)
280 hrtc->Tamper2EventCallback = HAL_RTCEx_Tamper2EventCallback;
283 if (hrtc->MspInitCallback == NULL)
288 hrtc->MspInitCallback(hrtc);
290 if (hrtc->MspDeInitCallback == NULL)
321 hrtc->
Instance->CR &= ((uint32_t)~(RTC_CR_FMT | RTC_CR_OSEL | RTC_CR_POL));
383 hrtc->
Instance->DR = (RTC_DR_WDU_0 | RTC_DR_MU_0 | RTC_DR_DU_0);
385 hrtc->
Instance->WUTR = RTC_WUTR_WUT;
386 hrtc->
Instance->PRER = (uint32_t)(RTC_PRER_PREDIV_A | 0x000000FFU);
387 hrtc->
Instance->CALIBR = 0x00000000U;
388 hrtc->
Instance->ALRMAR = 0x00000000U;
389 hrtc->
Instance->ALRMBR = 0x00000000U;
391 hrtc->
Instance->SHIFTR = 0x00000000U;
392 hrtc->
Instance->ALRMASSR = 0x00000000U;
393 hrtc->
Instance->ALRMBSSR = 0x00000000U;
405 hrtc->
Instance->TAFCR = 0x00000000U;
407#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
408 if (hrtc->MspDeInitCallback == NULL)
414 hrtc->MspDeInitCallback(hrtc);
429#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
453 if (pCallback == NULL)
465 case HAL_RTC_ALARM_A_EVENT_CB_ID :
466 hrtc->AlarmAEventCallback = pCallback;
469 case HAL_RTC_ALARM_B_EVENT_CB_ID :
470 hrtc->AlarmBEventCallback = pCallback;
473 case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
474 hrtc->TimeStampEventCallback = pCallback;
477 case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
478 hrtc->WakeUpTimerEventCallback = pCallback;
481 case HAL_RTC_TAMPER1_EVENT_CB_ID :
482 hrtc->Tamper1EventCallback = pCallback;
485#if defined(RTC_TAMPER2_SUPPORT)
486 case HAL_RTC_TAMPER2_EVENT_CB_ID :
487 hrtc->Tamper2EventCallback = pCallback;
491 case HAL_RTC_MSPINIT_CB_ID :
492 hrtc->MspInitCallback = pCallback;
495 case HAL_RTC_MSPDEINIT_CB_ID :
496 hrtc->MspDeInitCallback = pCallback;
509 case HAL_RTC_MSPINIT_CB_ID :
510 hrtc->MspInitCallback = pCallback;
513 case HAL_RTC_MSPDEINIT_CB_ID :
514 hrtc->MspDeInitCallback = pCallback;
564 case HAL_RTC_ALARM_A_EVENT_CB_ID :
568 case HAL_RTC_ALARM_B_EVENT_CB_ID :
572 case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
576 case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
580 case HAL_RTC_TAMPER1_EVENT_CB_ID :
584#if defined(RTC_TAMPER2_SUPPORT)
585 case HAL_RTC_TAMPER2_EVENT_CB_ID :
586 hrtc->Tamper2EventCallback = HAL_RTCEx_Tamper2EventCallback;
590 case HAL_RTC_MSPINIT_CB_ID :
594 case HAL_RTC_MSPDEINIT_CB_ID :
608 case HAL_RTC_MSPINIT_CB_ID :
612 case HAL_RTC_MSPDEINIT_CB_ID :
700 uint32_t tmpreg = 0U;
715 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
731 (((uint32_t)sTime->
TimeFormat) << RTC_TR_PM_Pos));
735 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
747 tmpreg = (((uint32_t)(sTime->
Hours) << RTC_TR_HU_Pos) | \
748 ((uint32_t)(sTime->
Minutes) << RTC_TR_MNU_Pos) | \
749 ((uint32_t) sTime->
Seconds) | \
750 ((uint32_t)(sTime->
TimeFormat) << RTC_TR_PM_Pos));
765 hrtc->
Instance->CR &= (uint32_t)~RTC_CR_BKP;
814 uint32_t tmpreg = 0U;
829 sTime->
Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> RTC_TR_HU_Pos);
830 sTime->
Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >> RTC_TR_MNU_Pos);
831 sTime->
Seconds = (uint8_t)( tmpreg & (RTC_TR_ST | RTC_TR_SU));
832 sTime->
TimeFormat = (uint8_t)((tmpreg & (RTC_TR_PM)) >> RTC_TR_PM_Pos);
859 uint32_t datetmpreg = 0U;
872 sDate->
Month = (uint8_t)((sDate->
Month & (uint8_t)~(0x10U)) + (uint8_t)0x0AU);
886 ((uint32_t)sDate->
WeekDay << RTC_DR_WDU_Pos));
894 datetmpreg = ((((uint32_t)sDate->
Year) << RTC_DR_YU_Pos) | \
895 (((uint32_t)sDate->
Month) << RTC_DR_MU_Pos) | \
896 ((uint32_t) sDate->
Date) | \
897 (((uint32_t)sDate->
WeekDay) << RTC_DR_WDU_Pos));
948 uint32_t datetmpreg = 0U;
957 sDate->
Year = (uint8_t)((datetmpreg & (RTC_DR_YT | RTC_DR_YU)) >> RTC_DR_YU_Pos);
958 sDate->
Month = (uint8_t)((datetmpreg & (RTC_DR_MT | RTC_DR_MU)) >> RTC_DR_MU_Pos);
959 sDate->
Date = (uint8_t) (datetmpreg & (RTC_DR_DT | RTC_DR_DU));
960 sDate->
WeekDay = (uint8_t)((datetmpreg & (RTC_DR_WDU)) >> RTC_DR_WDU_Pos);
1006 uint32_t tickstart = 0U;
1007 uint32_t tmpreg = 0U;
1008 uint32_t subsecondtmpreg = 0U;
1028 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1060 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1083 tmpreg = (((uint32_t)(sAlarm->
AlarmTime.
Hours) << RTC_ALRMAR_HU_Pos) | \
1131 hrtc->
Instance->ALRMAR = (uint32_t)tmpreg;
1133 hrtc->
Instance->ALRMASSR = subsecondtmpreg;
1168 hrtc->
Instance->ALRMBR = (uint32_t)tmpreg;
1170 hrtc->
Instance->ALRMBSSR = subsecondtmpreg;
1204 uint32_t tmpreg = 0U;
1205 uint32_t subsecondtmpreg = 0U;
1225 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1257 if ((hrtc->
Instance->CR & RTC_CR_FMT) != 0U)
1280 tmpreg = (((uint32_t)(sAlarm->
AlarmTime.
Hours) << RTC_ALRMAR_HU_Pos) | \
1323 hrtc->
Instance->ALRMAR = (uint32_t)tmpreg;
1325 hrtc->
Instance->ALRMASSR = subsecondtmpreg;
1360 hrtc->
Instance->ALRMBR = (uint32_t)tmpreg;
1362 hrtc->
Instance->ALRMBSSR = subsecondtmpreg;
1397 uint32_t tickstart = 0U;
1495 uint32_t tmpreg = 0U;
1496 uint32_t subsecondtmpreg = 0U;
1506 tmpreg = (uint32_t)(hrtc->
Instance->ALRMAR);
1507 subsecondtmpreg = (uint32_t)((hrtc->
Instance->ALRMASSR) & RTC_ALRMASSR_SS);
1513 tmpreg = (uint32_t)(hrtc->
Instance->ALRMBR);
1514 subsecondtmpreg = (uint32_t)((hrtc->
Instance->ALRMBSSR) & RTC_ALRMBSSR_SS);
1518 sAlarm->
AlarmTime.
Hours = (uint8_t) ((tmpreg & (RTC_ALRMAR_HT | RTC_ALRMAR_HU)) >> RTC_ALRMAR_HU_Pos);
1519 sAlarm->
AlarmTime.
Minutes = (uint8_t) ((tmpreg & (RTC_ALRMAR_MNT | RTC_ALRMAR_MNU)) >> RTC_ALRMAR_MNU_Pos);
1520 sAlarm->
AlarmTime.
Seconds = (uint8_t) ( tmpreg & (RTC_ALRMAR_ST | RTC_ALRMAR_SU));
1523 sAlarm->
AlarmDateWeekDay = (uint8_t) ((tmpreg & (RTC_ALRMAR_DT | RTC_ALRMAR_DU)) >> RTC_ALRMAR_DU_Pos);
1559#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
1560 hrtc->AlarmAEventCallback(hrtc);
1577#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
1578 hrtc->AlarmBEventCallback(hrtc);
1614 uint32_t tickstart = 0U;
1624 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1678 uint32_t tickstart = 0U;
1687 while ((hrtc->
Instance->ISR & RTC_ISR_RSF) == 0U)
1708 SET_BIT(hrtc->
Instance->CR, RTC_CR_ADD1H);
1722 SET_BIT(hrtc->
Instance->CR, RTC_CR_SUB1H);
1736 SET_BIT(hrtc->
Instance->CR, RTC_CR_BKP);
1749 CLEAR_BIT(hrtc->
Instance->CR, RTC_CR_BKP);
1760 return READ_BIT(hrtc->
Instance->CR, RTC_CR_BKP);
1815 uint32_t tickstart = 0U;
1819 if (READ_BIT(hrtc->
Instance->ISR, RTC_ISR_INITF) == 0U)
1822 SET_BIT(hrtc->
Instance->ISR, RTC_ISR_INIT);
1828 while ((READ_BIT(hrtc->
Instance->ISR, RTC_ISR_INITF) == 0U) && (status !=
HAL_ERROR))
1853 CLEAR_BIT(hrtc->
Instance->ISR, RTC_ISR_INIT);
1856 if (READ_BIT(hrtc->
Instance->CR, RTC_CR_BYPSHAD) == 0U)
1876 uint32_t bcdhigh = 0U;
1878 while (number >= 10U)
1884 return ((uint8_t)(bcdhigh << 4U) | number);
1895 tens = (((uint32_t)number & 0xF0U) >> 4U) * 10U;
1896 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)
Timestamp callback.
void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc)
Tamper 1 callback.
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
Wakeup Timer callback.
void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc)
Alarm B callback.
#define RTC_ALARMDATEWEEKDAYSEL_DATE
#define RTC_ALARMMASK_ALL
HAL_StatusTypeDef HAL_RTC_DeInit(RTC_HandleTypeDef *hrtc)
DeInitializes the RTC peripheral.
void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc)
DeInitializes the RTC MSP.
HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc)
Initializes the RTC peripheral.
void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc)
Initializes the RTC MSP.
HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
Gets RTC current date.
HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
Sets RTC current date.
HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
Gets RTC current time.
HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
Sets RTC current time.
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
Alarm A callback.
HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm)
Deactivates the specified RTC Alarm.
HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format)
Gets the RTC Alarm value and masks.
HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
Sets the specified RTC Alarm with Interrupt.
void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc)
Handles Alarm interrupt request.
HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
Handles Alarm A Polling request.
HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
Sets the specified RTC Alarm.
void HAL_RTC_DST_Add1Hour(RTC_HandleTypeDef *hrtc)
Daylight Saving Time, adds one hour to the calendar in one single operation without going through the...
HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc)
Waits until the RTC Time and Date registers (RTC_TR and RTC_DR) are synchronized with RTC APB clock.
void HAL_RTC_DST_Sub1Hour(RTC_HandleTypeDef *hrtc)
Daylight Saving Time, subtracts one hour from the calendar in one single operation without going thro...
uint32_t HAL_RTC_DST_ReadStoreOperation(RTC_HandleTypeDef *hrtc)
Daylight Saving Time, reads the store operation bit.
void HAL_RTC_DST_ClearStoreOperation(RTC_HandleTypeDef *hrtc)
Daylight Saving Time, clears the store operation bit.
void HAL_RTC_DST_SetStoreOperation(RTC_HandleTypeDef *hrtc)
Daylight Saving Time, sets the store operation bit.
HAL_RTCStateTypeDef HAL_RTC_GetState(RTC_HandleTypeDef *hrtc)
Returns the RTC state.
#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)
Converts a 2-digit number from decimal to BCD format.
HAL_StatusTypeDef RTC_ExitInitMode(RTC_HandleTypeDef *hrtc)
Exits the RTC Initialization mode.
HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef *hrtc)
Enters the RTC Initialization mode.
uint8_t RTC_Bcd2ToByte(uint8_t number)
Converts a 2-digit number from BCD to decimal format.
#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.
__IO HAL_RTCStateTypeDef State
RTC Time structure definition.