137#ifdef HAL_RTC_MODULE_ENABLED
188 uint32_t tmpreg = 0U;
200 hrtc->
Instance->TAFCR &= (uint32_t)~RTC_TAFCR_TSINSEL;
201 hrtc->
Instance->TAFCR |= (uint32_t)(RTC_TimeStampPin);
204 tmpreg = (uint32_t)(hrtc->
Instance->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
207 tmpreg |= RTC_TimeStampEdge;
213 hrtc->
Instance->CR = (uint32_t)tmpreg;
260 uint32_t tmpreg = 0U;
272 hrtc->
Instance->TAFCR &= (uint32_t)~RTC_TAFCR_TSINSEL;
273 hrtc->
Instance->TAFCR |= (uint32_t)(RTC_TimeStampPin);
276 tmpreg = (uint32_t)(hrtc->
Instance->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
279 tmpreg |= RTC_TimeStampEdge;
285 hrtc->
Instance->CR = (uint32_t)tmpreg;
323 uint32_t tmpreg = 0U;
337 tmpreg = (uint32_t)(hrtc->
Instance->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
340 hrtc->
Instance->CR = (uint32_t)tmpreg;
367 uint32_t tmptime = 0U;
368 uint32_t tmpdate = 0U;
378 sTimeStamp->
Hours = (uint8_t)((tmptime & (RTC_TSTR_HT | RTC_TSTR_HU)) >> RTC_TSTR_HU_Pos);
379 sTimeStamp->
Minutes = (uint8_t)((tmptime & (RTC_TSTR_MNT | RTC_TSTR_MNU)) >> RTC_TSTR_MNU_Pos);
380 sTimeStamp->
Seconds = (uint8_t)((tmptime & (RTC_TSTR_ST | RTC_TSTR_SU)) >> RTC_TSTR_SU_Pos);
381 sTimeStamp->
TimeFormat = (uint8_t)((tmptime & (RTC_TSTR_PM)) >> RTC_TSTR_PM_Pos);
385 sTimeStampDate->
Year = 0U;
386 sTimeStampDate->
Month = (uint8_t)((tmpdate & (RTC_TSDR_MT | RTC_TSDR_MU)) >> RTC_TSDR_MU_Pos);
387 sTimeStampDate->
Date = (uint8_t)((tmpdate & (RTC_TSDR_DT | RTC_TSDR_DU)) >> RTC_TSDR_DU_Pos);
388 sTimeStampDate->
WeekDay = (uint8_t)((tmpdate & (RTC_TSDR_WDU)) >> RTC_TSDR_WDU_Pos);
420 uint32_t tmpreg = 0U;
442 tmpreg |= (sTamper->
Tamper);
449 tmpreg |= (uint32_t)(sTamper->
Tamper << 1U);
454 tmpreg &= (uint32_t)~(sTamper->
Tamper << 1U);
462 RTC_TAFCR_TAMP1INSEL | \
466 tmpreg |= ((uint32_t)sTamper->
Filter | \
474 tmpreg &= (uint32_t)~RTC_TAFCR_TAMPIE;
497 uint32_t tmpreg = 0U;
519 tmpreg |= (sTamper->
Tamper);
526 tmpreg |= (uint32_t)(sTamper->
Tamper << 1U);
531 tmpreg &= (uint32_t)~(sTamper->
Tamper << 1U);
539 RTC_TAFCR_TAMP1INSEL | \
543 tmpreg |= ((uint32_t)sTamper->
Filter | \
551 tmpreg |= (uint32_t)RTC_TAFCR_TAMPIE;
590 hrtc->
Instance->TAFCR &= (uint32_t)~Tamper;
618#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
619 hrtc->TimeStampEventCallback(hrtc);
640#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
641 hrtc->Tamper1EventCallback(hrtc);
648#if defined(RTC_TAMPER2_SUPPORT)
659#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
660 hrtc->Tamper2EventCallback(hrtc);
662 HAL_RTCEx_Tamper2EventCallback(hrtc);
704#if defined(RTC_TAMPER2_SUPPORT)
731 uint32_t tickstart = 0U;
740 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
774 uint32_t tickstart = 0U;
784 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
801#if defined(RTC_TAMPER2_SUPPORT)
811 uint32_t tickstart = 0U;
821 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
867 uint32_t tickstart = 0U;
882 if ((hrtc->
Instance->CR & RTC_CR_WUTE) != 0U)
931 hrtc->
Instance->CR &= (uint32_t)~RTC_CR_WUCKSEL;
934 hrtc->
Instance->CR |= (uint32_t)WakeUpClock;
937 hrtc->
Instance->WUTR = (uint32_t)WakeUpCounter;
978 if ((hrtc->
Instance->CR & RTC_CR_WUTE) != 0U)
1027 hrtc->
Instance->CR &= (uint32_t)~RTC_CR_WUCKSEL;
1030 hrtc->
Instance->CR |= (uint32_t)WakeUpClock;
1033 hrtc->
Instance->WUTR = (uint32_t)WakeUpCounter;
1064 uint32_t tickstart = 0U;
1120 return ((uint32_t)(hrtc->
Instance->WUTR & RTC_WUTR_WUT));
1146#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
1147 hrtc->WakeUpTimerEventCallback(hrtc);
1182 uint32_t tickstart = 0U;
1191 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1255 tmp = (uint32_t) & (hrtc->
Instance->BKP0R);
1256 tmp += (BackupRegister * 4U);
1259 *(__IO uint32_t *)tmp = (uint32_t)Data;
1278 tmp = (uint32_t) & (hrtc->
Instance->BKP0R);
1279 tmp += (BackupRegister * 4U);
1282 return (*(__IO uint32_t *)tmp);
1327 hrtc->
Instance->CALIBR = (uint32_t)(CalibSign | Value);
1413 uint32_t tickstart = 0U;
1429 if ((hrtc->
Instance->ISR & RTC_ISR_RECALPF) != 0U)
1435 while ((hrtc->
Instance->ISR & RTC_ISR_RECALPF) != 0U)
1454 hrtc->
Instance->CALR = (uint32_t)((uint32_t)SmoothCalibPeriod | \
1455 (uint32_t)SmoothCalibPlusPulses | \
1456 (uint32_t)SmoothCalibMinusPulsesValue);
1485 uint32_t tickstart = 0U;
1503 while ((hrtc->
Instance->ISR & RTC_ISR_SHPF) != 0U)
1520 if ((hrtc->
Instance->CR & RTC_CR_REFCKON) == 0U)
1523 hrtc->
Instance->SHIFTR = (uint32_t)(uint32_t)(ShiftSubFS) | (uint32_t)(ShiftAdd1S);
1526 if ((hrtc->
Instance->CR & RTC_CR_BYPSHAD) == 0U)
1592 hrtc->
Instance->CR &= (uint32_t)~RTC_CR_COSEL;
1595 hrtc->
Instance->CR |= (uint32_t)CalibOutput;
1748 hrtc->
Instance->CR |= (uint8_t)RTC_CR_BYPSHAD;
1781 hrtc->
Instance->CR &= (uint8_t)~RTC_CR_BYPSHAD;
1839 uint32_t tickstart = 0U;
1849 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__)
Enable the RTC calibration output.
#define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__)
Enable the clock reference detection.
#define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__)
Disable the clock reference detection.
#define __HAL_RTC_COARSE_CALIB_DISABLE(__HANDLE__)
Disable the Coarse calibration process.
#define __HAL_RTC_COARSE_CALIB_ENABLE(__HANDLE__)
Enable the Coarse calibration process.
#define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__)
Disable the calibration output.
void HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc)
Timestamp callback.
HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc)
Deactivates Timestamp.
void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc)
Tamper 1 callback.
HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper)
Sets Tamper with interrupt.
HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper)
Sets Tamper.
HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format)
Gets the RTC Timestamp value.
void HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc)
Handles Timestamp and Tamper interrupt request.
HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin)
Sets Timestamp.
HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin)
Sets Timestamp with Interrupt.
HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
Handles Tamper 1 Polling.
HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper)
Deactivates Tamper.
HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
Handles Timestamp polling request.
HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
Handles Wakeup Timer Polling.
HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc)
Deactivates wakeup timer counter.
void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc)
Handles Wakeup Timer interrupt request.
HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock)
Sets wakeup timer with interrupt.
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
Wakeup Timer callback.
HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock)
Sets wakeup timer.
uint32_t HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc)
Gets wakeup timer counter.
HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS)
Configures the Synchronization Shift Control Settings.
HAL_StatusTypeDef HAL_RTCEx_SetCoarseCalib(RTC_HandleTypeDef *hrtc, uint32_t CalibSign, uint32_t Value)
Sets the Coarse calibration parameters.
uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister)
Reads data from the specified RTC Backup data Register.
HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue)
Sets the Smooth calibration parameters.
HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc)
Deactivates the Calibration Pinout (RTC_CALIB) Selection (1Hz or 512Hz).
HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc)
Enables the Bypass Shadow feature.
HAL_StatusTypeDef HAL_RTCEx_DeactivateCoarseCalib(RTC_HandleTypeDef *hrtc)
Deactivates the Coarse calibration parameters.
HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc)
Disable the RTC reference clock detection.
HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc)
Disables the Bypass Shadow feature.
HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc)
Enables the RTC reference clock detection.
void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data)
Writes a data in a specified RTC Backup data register.
HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput)
Configures the Calibration Pinout (RTC_CALIB) Selection (1Hz or 512Hz).
void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc)
Alarm B callback.
HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
Handles Alarm B Polling request.
#define IS_RTC_SMOOTH_CALIB_MINUS(VALUE)
#define IS_RTC_SHIFT_ADD1S(SEL)
#define IS_RTC_TAMPER_TRIGGER(TRIGGER)
#define IS_TIMESTAMP_EDGE(EDGE)
#define IS_RTC_TIMESTAMP_PIN(PIN)
#define IS_RTC_WAKEUP_COUNTER(COUNTER)
#define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD)
#define IS_RTC_SHIFT_SUBFS(FS)
#define IS_RTC_TAMPER(TAMPER)
#define IS_RTC_CALIB_SIGN(SIGN)
#define IS_RTC_TAMPER_FILTER(FILTER)
#define IS_RTC_TAMPER_PULLUP_STATE(STATE)
#define IS_RTC_WAKEUP_CLOCK(CLOCK)
#define IS_RTC_SMOOTH_CALIB_PLUS(PLUS)
#define IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(FILTER, TRIGGER)
#define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(DETECTION)
#define IS_RTC_CALIB_OUTPUT(OUTPUT)
#define IS_RTC_TAMPER_SAMPLING_FREQ(FREQ)
#define IS_RTC_CALIB_VALUE(VALUE)
#define IS_RTC_TAMPER_PRECHARGE_DURATION(DURATION)
#define IS_RTC_TAMPER_PIN(PIN)
#define RTC_TAMPERFILTER_MASK
#define RTC_TAMPERPRECHARGEDURATION_MASK
#define RTC_TAMPER_PULLUP_MASK
#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK
#define RTC_TIMESTAMPONTAMPERDETECTION_MASK
#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE()
Enable rising edge trigger on the RTC Tamper and Timestamp associated EXTI line.
#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()
Enable interrupt on the RTC Tamper and Timestamp associated EXTI line.
#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()
Clear the RTC Tamper and Timestamp associated EXTI line flag.
#define RTC_TAMPERTRIGGER_FALLINGEDGE
#define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the RTC Tamper's pending flags.
#define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)
Check whether the specified RTC Tamper interrupt has been enabled or not.
#define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)
Get the selected RTC Tamper's flag status.
#define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the RTC Timestamp interrupt.
#define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)
Check whether the specified RTC Timestamp interrupt has been enabled or not.
#define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)
Get the selected RTC Timestamp's flag status.
#define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the RTC Timestamp interrupt.
#define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the RTC Timestamp's pending flags.
#define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__)
Enable the RTC Timestamp peripheral.
#define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__)
Disable the RTC Wakeup Timer peripheral.
#define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)
Get the selected RTC Wakeup Timer's flag status.
#define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()
Clear the RTC Wakeup Timer associated EXTI line flag.
#define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the RTC Wakeup Timer interrupt.
#define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__)
Enable the RTC WakeUp Timer peripheral.
#define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the RTC Wakeup Timer interrupt.
#define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the RTC Wakeup timer's pending flags.
#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()
Enable rising edge trigger on the RTC Wakeup Timer associated EXTI line.
#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()
Enable interrupt on the RTC Wakeup Timer associated EXTI line.
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.
#define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the RTC Alarm's pending flags.
#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_WRITEPROTECTION_DISABLE(__HANDLE__)
Disable the write protection for RTC registers.
#define IS_RTC_FORMAT(FORMAT)
#define RTC_DR_RESERVED_MASK
#define RTC_TIMEOUT_VALUE
#define RTC_TR_RESERVED_MASK
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 Date structure definition.
RTC Handle Structure definition.
__IO HAL_RTCStateTypeDef State
RTC Tamper structure definition.
uint32_t SamplingFrequency
uint32_t PrechargeDuration
uint32_t TimeStampOnTamperDetection
RTC Time structure definition.