STM32F4xx_HAL_Driver  1.8.3
stm32f4xx_hal_rtc_ex.h
Go to the documentation of this file.
1 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32F4xx_HAL_RTC_EX_H
21 #define STM32F4xx_HAL_RTC_EX_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 
29 #include "stm32f4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
40 
48 typedef struct
49 {
50  uint32_t Tamper;
53  uint32_t PinSelection;
56  uint32_t Trigger;
59  uint32_t Filter;
62  uint32_t SamplingFrequency;
65  uint32_t PrechargeDuration;
68  uint32_t TamperPullUp;
78 /* Exported constants --------------------------------------------------------*/
79 
87 #define RTC_BKP_DR0 0x00000000U
88 #define RTC_BKP_DR1 0x00000001U
89 #define RTC_BKP_DR2 0x00000002U
90 #define RTC_BKP_DR3 0x00000003U
91 #define RTC_BKP_DR4 0x00000004U
92 #define RTC_BKP_DR5 0x00000005U
93 #define RTC_BKP_DR6 0x00000006U
94 #define RTC_BKP_DR7 0x00000007U
95 #define RTC_BKP_DR8 0x00000008U
96 #define RTC_BKP_DR9 0x00000009U
97 #define RTC_BKP_DR10 0x0000000AU
98 #define RTC_BKP_DR11 0x0000000BU
99 #define RTC_BKP_DR12 0x0000000CU
100 #define RTC_BKP_DR13 0x0000000DU
101 #define RTC_BKP_DR14 0x0000000EU
102 #define RTC_BKP_DR15 0x0000000FU
103 #define RTC_BKP_DR16 0x00000010U
104 #define RTC_BKP_DR17 0x00000011U
105 #define RTC_BKP_DR18 0x00000012U
106 #define RTC_BKP_DR19 0x00000013U
114 #define RTC_TIMESTAMPEDGE_RISING 0x00000000U
115 #define RTC_TIMESTAMPEDGE_FALLING RTC_CR_TSEDGE
123 #define RTC_TIMESTAMPPIN_DEFAULT 0x00000000U
124 #if defined(RTC_AF2_SUPPORT)
125 #define RTC_TIMESTAMPPIN_POS1 RTC_TAFCR_TSINSEL
126 #endif /* RTC_AF2_SUPPORT */
134 #define RTC_TAMPER_1 RTC_TAFCR_TAMP1E
135 #if defined(RTC_TAMPER2_SUPPORT)
136 #define RTC_TAMPER_2 RTC_TAFCR_TAMP2E
137 #endif /* RTC_TAMPER2_SUPPORT */
145 #define RTC_TAMPERPIN_DEFAULT 0x00000000U
146 #if defined(RTC_AF2_SUPPORT)
147 #define RTC_TAMPERPIN_POS1 RTC_TAFCR_TAMP1INSEL
148 #endif /* RTC_AF2_SUPPORT */
156 #define RTC_IT_TAMP RTC_TAFCR_TAMPIE
164 #define RTC_TAMPERTRIGGER_RISINGEDGE 0x00000000U
165 #define RTC_TAMPERTRIGGER_FALLINGEDGE 0x00000002U
166 #define RTC_TAMPERTRIGGER_LOWLEVEL RTC_TAMPERTRIGGER_RISINGEDGE
167 #define RTC_TAMPERTRIGGER_HIGHLEVEL RTC_TAMPERTRIGGER_FALLINGEDGE
175 #define RTC_TAMPERFILTER_DISABLE 0x00000000U
177 #define RTC_TAMPERFILTER_2SAMPLE RTC_TAFCR_TAMPFLT_0
179 #define RTC_TAMPERFILTER_4SAMPLE RTC_TAFCR_TAMPFLT_1
181 #define RTC_TAMPERFILTER_8SAMPLE RTC_TAFCR_TAMPFLT
183 #define RTC_TAMPERFILTER_MASK RTC_TAFCR_TAMPFLT
192 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 0x00000000U
194 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 RTC_TAFCR_TAMPFREQ_0
196 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 RTC_TAFCR_TAMPFREQ_1
198 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 (RTC_TAFCR_TAMPFREQ_0 | RTC_TAFCR_TAMPFREQ_1)
200 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 RTC_TAFCR_TAMPFREQ_2
202 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024 (RTC_TAFCR_TAMPFREQ_0 | RTC_TAFCR_TAMPFREQ_2)
204 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 (RTC_TAFCR_TAMPFREQ_1 | RTC_TAFCR_TAMPFREQ_2)
206 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 RTC_TAFCR_TAMPFREQ
208 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK RTC_TAFCR_TAMPFREQ
217 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK 0x00000000U
219 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK RTC_TAFCR_TAMPPRCH_0
221 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK RTC_TAFCR_TAMPPRCH_1
223 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK RTC_TAFCR_TAMPPRCH
225 #define RTC_TAMPERPRECHARGEDURATION_MASK RTC_TAFCR_TAMPPRCH
234 #define RTC_TAMPER_PULLUP_ENABLE 0x00000000U
235 #define RTC_TAMPER_PULLUP_DISABLE RTC_TAFCR_TAMPPUDIS
236 #define RTC_TAMPER_PULLUP_MASK RTC_TAFCR_TAMPPUDIS
244 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE RTC_TAFCR_TAMPTS
245 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 0x00000000U
246 #define RTC_TIMESTAMPONTAMPERDETECTION_MASK RTC_TAFCR_TAMPTS
254 #define RTC_WAKEUPCLOCK_RTCCLK_DIV16 0x00000000U
255 #define RTC_WAKEUPCLOCK_RTCCLK_DIV8 RTC_CR_WUCKSEL_0
256 #define RTC_WAKEUPCLOCK_RTCCLK_DIV4 RTC_CR_WUCKSEL_1
257 #define RTC_WAKEUPCLOCK_RTCCLK_DIV2 (RTC_CR_WUCKSEL_0 | RTC_CR_WUCKSEL_1)
258 #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS RTC_CR_WUCKSEL_2
259 #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS (RTC_CR_WUCKSEL_1 | RTC_CR_WUCKSEL_2)
267 #define RTC_CALIBSIGN_POSITIVE 0x00000000U
268 #define RTC_CALIBSIGN_NEGATIVE RTC_CALIBR_DCS
276 #define RTC_SMOOTHCALIB_PERIOD_32SEC 0x00000000U
278 #define RTC_SMOOTHCALIB_PERIOD_16SEC RTC_CALR_CALW16
280 #define RTC_SMOOTHCALIB_PERIOD_8SEC RTC_CALR_CALW8
289 #define RTC_SMOOTHCALIB_PLUSPULSES_SET RTC_CALR_CALP
292 #define RTC_SMOOTHCALIB_PLUSPULSES_RESET 0x00000000U
301 #define RTC_SHIFTADD1S_RESET 0x00000000U
302 #define RTC_SHIFTADD1S_SET RTC_SHIFTR_ADD1S
310 #define RTC_CALIBOUTPUT_512HZ 0x00000000U
311 #define RTC_CALIBOUTPUT_1HZ RTC_CR_COSEL
320 /* Exported macros -----------------------------------------------------------*/
321 
326 /* ---------------------------------WAKEUPTIMER-------------------------------*/
327 
337 #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
338 
344 #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
345 
354 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
355 
364 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
365 
374 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4U)) != 0U) ? 1U : 0U)
375 
384 #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
385 
395 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
396 
405 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
406 
411 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() (EXTI->IMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
412 
417 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() (EXTI->IMR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
418 
423 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT() (EXTI->EMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
424 
429 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT() (EXTI->EMR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
430 
435 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
436 
441 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
442 
447 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
448 
453 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
454 
459 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() do { \
460  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE(); \
461  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE(); \
462  } while(0U)
463 
469 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() do { \
470  __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE(); \
471  __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE(); \
472  } while(0U)
473 
478 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() (EXTI->PR & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
479 
484 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() (EXTI->PR = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
485 
490 #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() (EXTI->SWIER |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
491 
496 /* ---------------------------------TIMESTAMP---------------------------------*/
497 
507 #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
508 
514 #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
515 
524 #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
525 
534 #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
535 
544 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4U)) != 0U) ? 1U : 0U)
545 
554 #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
555 
565 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
566 
576 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
577 
582 /* ---------------------------------TAMPER------------------------------------*/
583 
593 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR |= (RTC_TAFCR_TAMP1E))
594 
600 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR &= ~(RTC_TAFCR_TAMP1E))
601 
602 #if defined(RTC_TAMPER2_SUPPORT)
608 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR |= (RTC_TAFCR_TAMP2E))
609 
615 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR &= ~(RTC_TAFCR_TAMP2E))
616 #endif /* RTC_TAMPER2_SUPPORT */
617 
626 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->TAFCR |= (__INTERRUPT__))
627 
636 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->TAFCR &= ~(__INTERRUPT__))
637 
646 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->TAFCR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
647 
658 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
659 
670 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
675 /* --------------------------TAMPER/TIMESTAMP---------------------------------*/
684 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT() (EXTI->IMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
685 
690 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT() (EXTI->IMR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
691 
696 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT() (EXTI->EMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
697 
702 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT() (EXTI->EMR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
703 
708 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
709 
714 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
715 
720 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
721 
726 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
727 
732 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() do { \
733  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE(); \
734  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); \
735  } while(0U)
736 
742 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() do { \
743  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE(); \
744  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE(); \
745  } while(0U)
746 
751 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() (EXTI->PR & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
752 
757 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG() (EXTI->PR = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
758 
763 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT() (EXTI->SWIER |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
768 /* ------------------------------CALIBRATION----------------------------------*/
769 
779 #define __HAL_RTC_COARSE_CALIB_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_DCE))
780 
786 #define __HAL_RTC_COARSE_CALIB_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_DCE))
787 
793 #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
794 
800 #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
801 
807 #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
808 
814 #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
815 
824 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
833 /* Exported functions --------------------------------------------------------*/
834 
842 /* RTC Timestamp and Tamper functions *****************************************/
843 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin);
844 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin);
845 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
846 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
847 
848 HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
849 HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
850 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
852 
854 #if defined(RTC_TAMPER2_SUPPORT)
856 #endif /* RTC_TAMPER2_SUPPORT */
858 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
859 HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
860 #if defined(RTC_TAMPER2_SUPPORT)
861 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
862 #endif /* RTC_TAMPER2_SUPPORT */
870 /* RTC Wakeup functions ******************************************************/
871 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
872 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
873 HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
877 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
885 /* Extended Control functions ************************************************/
886 void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
887 uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
888 
889 HAL_StatusTypeDef HAL_RTCEx_SetCoarseCalib(RTC_HandleTypeDef *hrtc, uint32_t CalibSign, uint32_t Value);
890 HAL_StatusTypeDef HAL_RTCEx_DeactivateCoarseCalib(RTC_HandleTypeDef *hrtc);
891 HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue);
892 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
893 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
895 HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);
896 HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);
897 HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);
898 HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);
906 /* Extended RTC features functions *******************************************/
908 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
917 /* Private types -------------------------------------------------------------*/
918 /* Private variables ---------------------------------------------------------*/
919 /* Private constants ---------------------------------------------------------*/
920 
924 #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT EXTI_IMR_MR21
925 #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT EXTI_IMR_MR22
933 /* Masks Definition */
934 #if defined(RTC_TAMPER2_SUPPORT)
935 #define RTC_TAMPER_ENABLE_BITS_MASK ((uint32_t) (RTC_TAMPER_1 | \
936  RTC_TAMPER_2))
937 
938 #define RTC_TAMPER_FLAGS_MASK ((uint32_t) (RTC_FLAG_TAMP1F | \
939  RTC_FLAG_TAMP2F))
940 #else /* RTC_TAMPER2_SUPPORT */
941 #define RTC_TAMPER_ENABLE_BITS_MASK RTC_TAMPER_1
942 
943 #define RTC_TAMPER_FLAGS_MASK RTC_FLAG_TAMP1F
944 #endif /* RTC_TAMPER2_SUPPORT */
949 /* Private macros ------------------------------------------------------------*/
950 
958 #define IS_RTC_BKP(BKP) ((BKP) < (uint32_t) RTC_BKP_NUMBER)
959 
960 #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
961  ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
962 
963 #define IS_RTC_TAMPER(TAMPER) ((((TAMPER) & ((uint32_t)~RTC_TAMPER_ENABLE_BITS_MASK)) == 0x00U) && ((TAMPER) != 0U))
964 
965 #if defined(RTC_AF2_SUPPORT)
966 #define IS_RTC_TAMPER_PIN(PIN) (((PIN) == RTC_TAMPERPIN_DEFAULT) || \
967  ((PIN) == RTC_TAMPERPIN_POS1))
968 #else /* RTC_AF2_SUPPORT */
969 #define IS_RTC_TAMPER_PIN(PIN) ((PIN) == RTC_TAMPERPIN_DEFAULT)
970 #endif /* RTC_AF2_SUPPORT */
971 
972 #if defined(RTC_AF2_SUPPORT)
973 #define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT) || \
974  ((PIN) == RTC_TIMESTAMPPIN_POS1))
975 #else /* RTC_AF2_SUPPORT */
976 #define IS_RTC_TIMESTAMP_PIN(PIN) ((PIN) == RTC_TIMESTAMPPIN_DEFAULT)
977 #endif /* RTC_AF2_SUPPORT */
978 
979 #define IS_RTC_TAMPER_TRIGGER(TRIGGER) (((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE) || \
980  ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \
981  ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL) || \
982  ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))
983 
984 #define IS_RTC_TAMPER_FILTER(FILTER) (((FILTER) == RTC_TAMPERFILTER_DISABLE) || \
985  ((FILTER) == RTC_TAMPERFILTER_2SAMPLE) || \
986  ((FILTER) == RTC_TAMPERFILTER_4SAMPLE) || \
987  ((FILTER) == RTC_TAMPERFILTER_8SAMPLE))
988 
989 #define IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(FILTER, TRIGGER) \
990  ( ( ((FILTER) != RTC_TAMPERFILTER_DISABLE) \
991  && ( ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL) \
992  || ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))) \
993  || ( ((FILTER) == RTC_TAMPERFILTER_DISABLE) \
994  && ( ((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE) \
995  || ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE))))
996 
997 #define IS_RTC_TAMPER_SAMPLING_FREQ(FREQ) (((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
998  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
999  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
1000  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
1001  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
1002  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
1003  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512) || \
1004  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
1005 
1006 #define IS_RTC_TAMPER_PRECHARGE_DURATION(DURATION) (((DURATION) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
1007  ((DURATION) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
1008  ((DURATION) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
1009  ((DURATION) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
1010 
1011 #define IS_RTC_TAMPER_PULLUP_STATE(STATE) (((STATE) == RTC_TAMPER_PULLUP_ENABLE) || \
1012  ((STATE) == RTC_TAMPER_PULLUP_DISABLE))
1013 
1014 #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(DETECTION) (((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
1015  ((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
1016 
1017 #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16) || \
1018  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8) || \
1019  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4) || \
1020  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2) || \
1021  ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
1022  ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
1023 
1024 #define IS_RTC_WAKEUP_COUNTER(COUNTER) ((COUNTER) <= RTC_WUTR_WUT)
1025 
1026 #define IS_RTC_CALIB_SIGN(SIGN) (((SIGN) == RTC_CALIBSIGN_POSITIVE) || \
1027  ((SIGN) == RTC_CALIBSIGN_NEGATIVE))
1028 
1029 #define IS_RTC_CALIB_VALUE(VALUE) ((VALUE) < 0x20U)
1030 
1031 #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
1032  ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
1033  ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
1034 
1035 #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
1036  ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
1037 
1038 #define IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= RTC_CALR_CALM)
1039 
1040 #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
1041  ((SEL) == RTC_SHIFTADD1S_SET))
1042 
1043 #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= RTC_SHIFTR_SUBFS)
1044 
1045 #define IS_RTC_CALIB_OUTPUT(OUTPUT) (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
1046  ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
1063 #ifdef __cplusplus
1064 }
1065 #endif
1066 
1067 #endif /* STM32F4xx_HAL_RTC_EX_H */
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_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
Handles Tamper 2 Polling.
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.
void HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc)
Tamper 2 callback.
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.
uint32_t TimeStampOnTamperDetection
RTC Tamper structure definition.
struct __RTC_HandleTypeDef else typedef struct endif RTC_HandleTypeDef
RTC Handle Structure definition.
RTC Date structure definition.
RTC Time structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.