STM CMSIS
stm32f4xx_hal_rtc_ex.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F4xx_HAL_RTC_EX_H
40 #define __STM32F4xx_HAL_RTC_EX_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f4xx_hal_def.h"
48 
57 /* Exported types ------------------------------------------------------------*/
65 typedef struct
66 {
67  uint32_t Tamper;
70  uint32_t PinSelection;
73  uint32_t Trigger;
76  uint32_t Filter;
79  uint32_t SamplingFrequency;
82  uint32_t PrechargeDuration;
85  uint32_t TamperPullUp;
95 /* Exported constants --------------------------------------------------------*/
103 #define RTC_BKP_DR0 ((uint32_t)0x00000000U)
104 #define RTC_BKP_DR1 ((uint32_t)0x00000001U)
105 #define RTC_BKP_DR2 ((uint32_t)0x00000002U)
106 #define RTC_BKP_DR3 ((uint32_t)0x00000003U)
107 #define RTC_BKP_DR4 ((uint32_t)0x00000004U)
108 #define RTC_BKP_DR5 ((uint32_t)0x00000005U)
109 #define RTC_BKP_DR6 ((uint32_t)0x00000006U)
110 #define RTC_BKP_DR7 ((uint32_t)0x00000007U)
111 #define RTC_BKP_DR8 ((uint32_t)0x00000008U)
112 #define RTC_BKP_DR9 ((uint32_t)0x00000009U)
113 #define RTC_BKP_DR10 ((uint32_t)0x0000000AU)
114 #define RTC_BKP_DR11 ((uint32_t)0x0000000BU)
115 #define RTC_BKP_DR12 ((uint32_t)0x0000000CU)
116 #define RTC_BKP_DR13 ((uint32_t)0x0000000DU)
117 #define RTC_BKP_DR14 ((uint32_t)0x0000000EU)
118 #define RTC_BKP_DR15 ((uint32_t)0x0000000FU)
119 #define RTC_BKP_DR16 ((uint32_t)0x00000010U)
120 #define RTC_BKP_DR17 ((uint32_t)0x00000011U)
121 #define RTC_BKP_DR18 ((uint32_t)0x00000012U)
122 #define RTC_BKP_DR19 ((uint32_t)0x00000013U)
123 
130 #define RTC_TIMESTAMPEDGE_RISING ((uint32_t)0x00000000U)
131 #define RTC_TIMESTAMPEDGE_FALLING ((uint32_t)0x00000008U)
132 
139 #define RTC_TAMPER_1 RTC_TAFCR_TAMP1E
140 #define RTC_TAMPER_2 RTC_TAFCR_TAMP2E
141 
148 #define RTC_TAMPERPIN_DEFAULT ((uint32_t)0x00000000U)
149 #define RTC_TAMPERPIN_POS1 ((uint32_t)0x00010000U)
150 
157 #define RTC_TIMESTAMPPIN_DEFAULT ((uint32_t)0x00000000U)
158 #define RTC_TIMESTAMPPIN_POS1 ((uint32_t)0x00020000U)
159 
166 #define RTC_TAMPERTRIGGER_RISINGEDGE ((uint32_t)0x00000000U)
167 #define RTC_TAMPERTRIGGER_FALLINGEDGE ((uint32_t)0x00000002U)
168 #define RTC_TAMPERTRIGGER_LOWLEVEL RTC_TAMPERTRIGGER_RISINGEDGE
169 #define RTC_TAMPERTRIGGER_HIGHLEVEL RTC_TAMPERTRIGGER_FALLINGEDGE
170 
177 #define RTC_TAMPERFILTER_DISABLE ((uint32_t)0x00000000U)
179 #define RTC_TAMPERFILTER_2SAMPLE ((uint32_t)0x00000800U)
181 #define RTC_TAMPERFILTER_4SAMPLE ((uint32_t)0x00001000U)
183 #define RTC_TAMPERFILTER_8SAMPLE ((uint32_t)0x00001800U)
192 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 ((uint32_t)0x00000000U)
194 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 ((uint32_t)0x00000100U)
196 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 ((uint32_t)0x00000200U)
198 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 ((uint32_t)0x00000300U)
200 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 ((uint32_t)0x00000400U)
202 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024 ((uint32_t)0x00000500U)
204 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 ((uint32_t)0x00000600U)
206 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 ((uint32_t)0x00000700U)
215 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK ((uint32_t)0x00000000U)
217 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK ((uint32_t)0x00002000U)
219 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK ((uint32_t)0x00004000U)
221 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK ((uint32_t)0x00006000U)
230 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE ((uint32_t)RTC_TAFCR_TAMPTS)
231 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE ((uint32_t)0x00000000U)
239 #define RTC_TAMPER_PULLUP_ENABLE ((uint32_t)0x00000000U)
240 #define RTC_TAMPER_PULLUP_DISABLE ((uint32_t)RTC_TAFCR_TAMPPUDIS)
248 #define RTC_WAKEUPCLOCK_RTCCLK_DIV16 ((uint32_t)0x00000000U)
249 #define RTC_WAKEUPCLOCK_RTCCLK_DIV8 ((uint32_t)0x00000001U)
250 #define RTC_WAKEUPCLOCK_RTCCLK_DIV4 ((uint32_t)0x00000002U)
251 #define RTC_WAKEUPCLOCK_RTCCLK_DIV2 ((uint32_t)0x00000003U)
252 #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS ((uint32_t)0x00000004U)
253 #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS ((uint32_t)0x00000006U)
261 #define RTC_CALIBSIGN_POSITIVE ((uint32_t)0x00000000U)
262 #define RTC_CALIBSIGN_NEGATIVE ((uint32_t)0x00000080U)
263 
270 #define RTC_SMOOTHCALIB_PERIOD_32SEC ((uint32_t)0x00000000U)
272 #define RTC_SMOOTHCALIB_PERIOD_16SEC ((uint32_t)0x00002000U)
274 #define RTC_SMOOTHCALIB_PERIOD_8SEC ((uint32_t)0x00004000U)
283 #define RTC_SMOOTHCALIB_PLUSPULSES_SET ((uint32_t)0x00008000U)
286 #define RTC_SMOOTHCALIB_PLUSPULSES_RESET ((uint32_t)0x00000000U)
295 #define RTC_SHIFTADD1S_RESET ((uint32_t)0x00000000U)
296 #define RTC_SHIFTADD1S_SET ((uint32_t)0x80000000U)
297 
305 #define RTC_CALIBOUTPUT_512HZ ((uint32_t)0x00000000U)
306 #define RTC_CALIBOUTPUT_1HZ ((uint32_t)0x00080000U)
307 
315 /* Exported macro ------------------------------------------------------------*/
320 /* ---------------------------------WAKEUPTIMER---------------------------------*/
330 #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
331 
337 #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
338 
347 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
348 
357 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
367 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4U)) != RESET)? SET : RESET)
377 #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
388 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
389 
398 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
399 
404 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() (EXTI->IMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
405 
410 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() (EXTI->IMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
411 
416 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT() (EXTI->EMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
417 
422 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT() (EXTI->EMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
423 
428 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
429 
434 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
435 
440 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
441 
446 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
447 
452 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() do { __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();\
453  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE();\
454  } while(0)
461 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() do { __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();\
462  __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE();\
463  } while(0)
464 
469 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() (EXTI->PR & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
470 
475 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() (EXTI->PR = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
476 
481 #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() (EXTI->SWIER |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
487 /* ---------------------------------TIMESTAMP---------------------------------*/
497 #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
498 
504 #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
505 
514 #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
515 
524 #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
534 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4U)) != RESET)? SET : RESET)
544 #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
555 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
556 
565 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
566 
571 /* ---------------------------------TAMPER------------------------------------*/
581 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR |= (RTC_TAFCR_TAMP1E))
582 
588 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR &= ~(RTC_TAFCR_TAMP1E))
589 
595 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR |= (RTC_TAFCR_TAMP2E))
596 
602 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAFCR &= ~(RTC_TAFCR_TAMP2E))
603 
613 #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4U)) != RESET)? SET : RESET)
614 
623 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->TAFCR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
624 
634 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
635 
645 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
646 
650 /* --------------------------TAMPER/TIMESTAMP---------------------------------*/
659 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT() (EXTI->IMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
660 
665 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT() (EXTI->IMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
671 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT() (EXTI->EMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
672 
677 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT() (EXTI->EMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
678 
683 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
684 
689 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
690 
695 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
696 
701 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
702 
707 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() do { __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();\
708  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); \
709  } while(0)
716 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() do { __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE();\
717  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE();\
718  } while(0)
719 
724 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() (EXTI->PR & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
725 
730 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG() (EXTI->PR = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
731 
736 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT() (EXTI->SWIER |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
741 /* ------------------------------Calibration----------------------------------*/
751 #define __HAL_RTC_COARSE_CALIB_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_DCE))
752 
758 #define __HAL_RTC_COARSE_CALIB_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_DCE))
759 
765 #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
766 
772 #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
773 
779 #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
780 
786 #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
787 
796 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
797 
805 /* Exported functions --------------------------------------------------------*/
813 /* RTC TimeStamp and Tamper functions *****************************************/
814 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
815 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
816 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
817 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
818 
819 HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper);
820 HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper);
821 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
822 void HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc);
823 
824 void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc);
825 void HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc);
826 void HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc);
827 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
828 HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
829 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
837 /* RTC Wake-up functions ******************************************************/
838 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
839 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
840 uint32_t HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
841 uint32_t HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc);
842 void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc);
844 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
852 /* Extension Control functions ************************************************/
853 void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
854 uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
855 
856 HAL_StatusTypeDef HAL_RTCEx_SetCoarseCalib(RTC_HandleTypeDef *hrtc, uint32_t CalibSign, uint32_t Value);
857 HAL_StatusTypeDef HAL_RTCEx_DeactivateCoarseCalib(RTC_HandleTypeDef *hrtc);
858 HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmouthCalibMinusPulsesValue);
859 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
860 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
861 HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc);
862 HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);
863 HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);
864 HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);
865 HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);
873 /* Extension RTC features functions *******************************************/
874 void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc);
875 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
884 /* Private types -------------------------------------------------------------*/
885 /* Private variables ---------------------------------------------------------*/
886 /* Private constants ---------------------------------------------------------*/
890 #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT ((uint32_t)EXTI_IMR_MR21)
891 #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT ((uint32_t)EXTI_IMR_MR22)
896 /* Private macros ------------------------------------------------------------*/
897 
904 #define IS_RTC_BKP(BKP) (((BKP) == RTC_BKP_DR0) || \
905  ((BKP) == RTC_BKP_DR1) || \
906  ((BKP) == RTC_BKP_DR2) || \
907  ((BKP) == RTC_BKP_DR3) || \
908  ((BKP) == RTC_BKP_DR4) || \
909  ((BKP) == RTC_BKP_DR5) || \
910  ((BKP) == RTC_BKP_DR6) || \
911  ((BKP) == RTC_BKP_DR7) || \
912  ((BKP) == RTC_BKP_DR8) || \
913  ((BKP) == RTC_BKP_DR9) || \
914  ((BKP) == RTC_BKP_DR10) || \
915  ((BKP) == RTC_BKP_DR11) || \
916  ((BKP) == RTC_BKP_DR12) || \
917  ((BKP) == RTC_BKP_DR13) || \
918  ((BKP) == RTC_BKP_DR14) || \
919  ((BKP) == RTC_BKP_DR15) || \
920  ((BKP) == RTC_BKP_DR16) || \
921  ((BKP) == RTC_BKP_DR17) || \
922  ((BKP) == RTC_BKP_DR18) || \
923  ((BKP) == RTC_BKP_DR19))
924 #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
925  ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
926 #define IS_RTC_TAMPER(TAMPER) ((((TAMPER) & ((uint32_t)!(RTC_TAFCR_TAMP1E | RTC_TAFCR_TAMP2E))) == 0x00U) && ((TAMPER) != (uint32_t)RESET))
927 
928 #define IS_RTC_TAMPER_PIN(PIN) (((PIN) == RTC_TAMPERPIN_DEFAULT) || \
929  ((PIN) == RTC_TAMPERPIN_POS1))
930 
931 #define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT) || \
932  ((PIN) == RTC_TIMESTAMPPIN_POS1))
933 
934 #define IS_RTC_TAMPER_TRIGGER(TRIGGER) (((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE) || \
935  ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \
936  ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL) || \
937  ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))
938 #define IS_RTC_TAMPER_FILTER(FILTER) (((FILTER) == RTC_TAMPERFILTER_DISABLE) || \
939  ((FILTER) == RTC_TAMPERFILTER_2SAMPLE) || \
940  ((FILTER) == RTC_TAMPERFILTER_4SAMPLE) || \
941  ((FILTER) == RTC_TAMPERFILTER_8SAMPLE))
942 #define IS_RTC_TAMPER_SAMPLING_FREQ(FREQ) (((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
943  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
944  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
945  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
946  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
947  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
948  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512) || \
949  ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
950 #define IS_RTC_TAMPER_PRECHARGE_DURATION(DURATION) (((DURATION) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
951  ((DURATION) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
952  ((DURATION) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
953  ((DURATION) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
954 #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(DETECTION) (((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
955  ((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
956 #define IS_RTC_TAMPER_PULLUP_STATE(STATE) (((STATE) == RTC_TAMPER_PULLUP_ENABLE) || \
957  ((STATE) == RTC_TAMPER_PULLUP_DISABLE))
958 #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16) || \
959  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8) || \
960  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4) || \
961  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2) || \
962  ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
963  ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
964 
965 #define IS_RTC_WAKEUP_COUNTER(COUNTER) ((COUNTER) <= 0xFFFFU)
966 #define IS_RTC_CALIB_SIGN(SIGN) (((SIGN) == RTC_CALIBSIGN_POSITIVE) || \
967  ((SIGN) == RTC_CALIBSIGN_NEGATIVE))
968 
969 #define IS_RTC_CALIB_VALUE(VALUE) ((VALUE) < 0x20U)
970 
971 #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
972  ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
973  ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
974 #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
975  ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
976 
977 #define IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= 0x000001FFU)
978 #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
979  ((SEL) == RTC_SHIFTADD1S_SET))
980 #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= 0x00007FFFU)
981 #define IS_RTC_CALIB_OUTPUT(OUTPUT) (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
982  ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
983 
999 #ifdef __cplusplus
1000 }
1001 #endif
1002 
1003 #endif /* __STM32F4xx_HAL_RTC_EX_H */
1004 
1005 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
uint32_t Filter
Definition: stm32f4xx_hal_rtc_ex.h:76
RTC Tamper structure definition.
Definition: stm32f4xx_hal_rtc_ex.h:65
This file contains HAL common defines, enumeration, macros and structures definitions.
uint32_t Trigger
Definition: stm32f4xx_hal_rtc_ex.h:73
uint32_t TamperPullUp
Definition: stm32f4xx_hal_rtc_ex.h:85
RTC Date structure definition.
Definition: stm32f4xx_hal_rtc.h:137
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f4xx_hal_def.h:57
RTC Time structure definition.
Definition: stm32f4xx_hal_rtc.h:101
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
Wake Up Timer Event Callback in non blocking mode.
Definition: stm32f4xx_hal_timebase_rtc_wakeup_template.c:273
uint32_t TimeStampOnTamperDetection
Definition: stm32f4xx_hal_rtc_ex.h:88
uint32_t PinSelection
Definition: stm32f4xx_hal_rtc_ex.h:70
uint32_t Tamper
Definition: stm32f4xx_hal_rtc_ex.h:67
RTC Handle Structure definition.
Definition: stm32f4xx_hal_rtc.h:180
uint32_t PrechargeDuration
Definition: stm32f4xx_hal_rtc_ex.h:82
uint32_t SamplingFrequency
Definition: stm32f4xx_hal_rtc_ex.h:79