STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_rtc_ex.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_RTC_EX_H
22 #define STM32L4xx_HAL_RTC_EX_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
47 typedef struct
48 {
49  uint32_t Tamper;
52  uint32_t Interrupt;
55  uint32_t Trigger;
58  uint32_t NoErase;
61  uint32_t MaskFlag;
64  uint32_t Filter;
67  uint32_t SamplingFrequency;
70  uint32_t PrechargeDuration;
73  uint32_t TamperPullUp;
87 /* Exported constants --------------------------------------------------------*/
88 
93 /* ========================================================================== */
94 /* ##### RTC TimeStamp exported constants ##### */
95 /* ========================================================================== */
96 
101 #define RTC_TIMESTAMPEDGE_RISING 0x00000000u
102 #define RTC_TIMESTAMPEDGE_FALLING RTC_CR_TSEDGE
103 
110 #define RTC_TIMESTAMPPIN_DEFAULT 0x00000000u
111 
115 /* ========================================================================== */
116 /* ##### RTC Wake-up exported constants ##### */
117 /* ========================================================================== */
118 
122 #define RTC_WAKEUPCLOCK_RTCCLK_DIV16 0x00000000u
123 #define RTC_WAKEUPCLOCK_RTCCLK_DIV8 RTC_CR_WUCKSEL_0
124 #define RTC_WAKEUPCLOCK_RTCCLK_DIV4 RTC_CR_WUCKSEL_1
125 #define RTC_WAKEUPCLOCK_RTCCLK_DIV2 (RTC_CR_WUCKSEL_0 | RTC_CR_WUCKSEL_1)
126 #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS RTC_CR_WUCKSEL_2
127 #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS (RTC_CR_WUCKSEL_1 | RTC_CR_WUCKSEL_2)
128 
132 /* ========================================================================== */
133 /* ##### Extended RTC Peripheral Control exported constants ##### */
134 /* ========================================================================== */
135 
139 #define RTC_SMOOTHCALIB_PERIOD_32SEC 0x00000000u
141 #define RTC_SMOOTHCALIB_PERIOD_16SEC RTC_CALR_CALW16
143 #define RTC_SMOOTHCALIB_PERIOD_8SEC RTC_CALR_CALW8
152 #define RTC_SMOOTHCALIB_PLUSPULSES_SET RTC_CALR_CALP
155 #define RTC_SMOOTHCALIB_PLUSPULSES_RESET 0x00000000u
161 #if defined(STM32L412xx) || defined(STM32L422xx)
162 
165 #define RTC_LPCAL_SET RTC_CALR_LPCAL
168 #define RTC_LPCAL_RESET 0x00000000u
175 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
176 
180 #define RTC_CALIBOUTPUT_512HZ 0x00000000u
181 #define RTC_CALIBOUTPUT_1HZ RTC_CR_COSEL
182 
189 #define RTC_SHIFTADD1S_RESET 0x00000000u
190 #define RTC_SHIFTADD1S_SET RTC_SHIFTR_ADD1S
191 
196 /* ========================================================================== */
197 /* ##### RTC Tamper exported constants ##### */
198 /* ========================================================================== */
199 
203 #if defined(STM32L412xx) || defined(STM32L422xx)
204 #if defined(RTC_TAMPER1_SUPPORT)
205 #define RTC_TAMPER_1 TAMP_CR1_TAMP1E
206 #endif /* RTC_TAMPER1_SUPPORT */
207 #define RTC_TAMPER_2 TAMP_CR1_TAMP2E
208 #if defined(RTC_TAMPER3_SUPPORT)
209 #define RTC_TAMPER_3 TAMP_CR1_TAMP3E
210 #endif /* RTC_TAMPER3_SUPPORT */
211 #define RTC_TAMPER_ALL (TAMP_CR1_TAMP1E | TAMP_CR1_TAMP2E)
212 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
213 #if defined(RTC_TAMPER1_SUPPORT)
214 #define RTC_TAMPER_1 RTC_TAMPCR_TAMP1E
215 #endif /* RTC_TAMPER1_SUPPORT */
216 #define RTC_TAMPER_2 RTC_TAMPCR_TAMP2E
217 #if defined(RTC_TAMPER3_SUPPORT)
218 #define RTC_TAMPER_3 RTC_TAMPCR_TAMP3E
219 #endif /* RTC_TAMPER3_SUPPORT */
220 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
221 
228 #if defined(STM32L412xx) || defined(STM32L422xx)
229 #define RTC_TAMPERTRIGGER_RISINGEDGE 0x00u
230 #define RTC_TAMPERTRIGGER_FALLINGEDGE 0x01u
231 #define RTC_TAMPERTRIGGER_LOWLEVEL 0x02u
232 #define RTC_TAMPERTRIGGER_HIGHLEVEL 0x03u
233 #else
234 #define RTC_TAMPERTRIGGER_RISINGEDGE ((uint32_t)0x00000000)
235 #define RTC_TAMPERTRIGGER_FALLINGEDGE ((uint32_t)0x00000002)
236 #define RTC_TAMPERTRIGGER_LOWLEVEL RTC_TAMPERTRIGGER_RISINGEDGE
237 #define RTC_TAMPERTRIGGER_HIGHLEVEL RTC_TAMPERTRIGGER_FALLINGEDGE
238 #endif
239 
246 #if defined(STM32L412xx) || defined(STM32L422xx)
247 #define RTC_TAMPERMASK_FLAG_DISABLE 0x00u
248 #define RTC_TAMPERMASK_FLAG_ENABLE 0x01u
249 #else
250 #define RTC_TAMPERMASK_FLAG_DISABLE 0x00000000u
251 #define RTC_TAMPERMASK_FLAG_ENABLE 0x00040000u
252 #endif
253 
260 #if defined(STM32L412xx) || defined(STM32L422xx)
261 #define RTC_TAMPER_ERASE_BACKUP_ENABLE 0x00u
262 #define RTC_TAMPER_ERASE_BACKUP_DISABLE 0x01u
263 #else
264 #define RTC_TAMPER_ERASE_BACKUP_ENABLE 0x00000000u
265 #define RTC_TAMPER_ERASE_BACKUP_DISABLE 0x00020000u
266 #endif
267 
274 #if defined(STM32L412xx) || defined(STM32L422xx)
275 #define RTC_TAMPERFILTER_DISABLE 0x00000000U
277 #define RTC_TAMPERFILTER_2SAMPLE TAMP_FLTCR_TAMPFLT_0
279 #define RTC_TAMPERFILTER_4SAMPLE TAMP_FLTCR_TAMPFLT_1
281 #define RTC_TAMPERFILTER_8SAMPLE TAMP_FLTCR_TAMPFLT
283 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
284 #define RTC_TAMPERFILTER_DISABLE 0x00000000u
286 #define RTC_TAMPERFILTER_2SAMPLE RTC_TAMPCR_TAMPFLT_0
288 #define RTC_TAMPERFILTER_4SAMPLE RTC_TAMPCR_TAMPFLT_1
290 #define RTC_TAMPERFILTER_8SAMPLE RTC_TAMPCR_TAMPFLT
292 #endif /*#if defined(STM32L412xx) || defined(STM32L422xx) */
293 
301 #if defined(STM32L412xx) || defined(STM32L422xx)
302 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 0x00000000U
304 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 TAMP_FLTCR_TAMPFREQ_0
306 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 TAMP_FLTCR_TAMPFREQ_1
308 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_1)
310 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 TAMP_FLTCR_TAMPFREQ_2
312 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024 (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_2)
314 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 (TAMP_FLTCR_TAMPFREQ_1 | TAMP_FLTCR_TAMPFREQ_2)
316 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 TAMP_FLTCR_TAMPFREQ
318 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK TAMP_FLTCR_TAMPFREQ
320 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
321 
322 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 0x00000000u
324 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 RTC_TAMPCR_TAMPFREQ_0
326 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 RTC_TAMPCR_TAMPFREQ_1
328 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_1)
330 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 RTC_TAMPCR_TAMPFREQ_2
332 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024 (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_2)
334 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 (RTC_TAMPCR_TAMPFREQ_1 | RTC_TAMPCR_TAMPFREQ_2)
336 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 RTC_TAMPCR_TAMPFREQ
338 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK RTC_TAMPCR_TAMPFREQ
340 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
341 
348 #if defined(STM32L412xx) || defined(STM32L422xx)
349 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK 0x00000000U
351 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK TAMP_FLTCR_TAMPPRCH_0
353 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK TAMP_FLTCR_TAMPPRCH_1
355 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK TAMP_FLTCR_TAMPPRCH
357 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
358 
359 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK 0x00000000u
361 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK RTC_TAMPCR_TAMPPRCH_0
363 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK RTC_TAMPCR_TAMPPRCH_1
365 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK RTC_TAMPCR_TAMPPRCH
367 #define RTC_TAMPERPRECHARGEDURATION_MASK RTC_TAMPCR_TAMPPRCH
369 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
370 
377 #if defined(STM32L412xx) || defined(STM32L422xx)
378 #define RTC_TAMPER_PULLUP_ENABLE 0x00000000u
379 #define RTC_TAMPER_PULLUP_DISABLE TAMP_FLTCR_TAMPPUDIS
380 #else
381 #define RTC_TAMPER_PULLUP_ENABLE 0x00000000u
382 #define RTC_TAMPER_PULLUP_DISABLE RTC_TAMPCR_TAMPPUDIS
383 #endif
384 
392 #if defined(STM32L412xx) || defined(STM32L422xx)
393 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 0x00000000u
394 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE RTC_CR_TAMPTS
395 #else
396 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 0x00000000u
397 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE RTC_TAMPCR_TAMPTS
398 #endif
399 
406 #if defined(STM32L412xx) || defined(STM32L422xx)
407 #define RTC_IT_TAMP (TAMP_IER_TAMP1IE | TAMP_IER_TAMP2IE)
408 #define RTC_IT_TAMP1 TAMP_IER_TAMP1IE
409 #define RTC_IT_TAMP2 TAMP_IER_TAMP2IE
410 #define RTC_IT_TAMPALL RTC_IT_TAMP
411 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
412 #define RTC_IT_TAMP RTC_TAMPCR_TAMPIE
413 #define RTC_IT_TAMP1 RTC_TAMPCR_TAMP1IE
414 #define RTC_IT_TAMP2 RTC_TAMPCR_TAMP2IE
415 #define RTC_IT_TAMP3 RTC_TAMPCR_TAMP3IE
416 #define RTC_IT_TAMPALL RTC_IT_TAMP
417 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
418 
425 #if defined(STM32L412xx) || defined(STM32L422xx)
426 #define RTC_FLAG_TAMP1F TAMP_SR_TAMP1F
427 #define RTC_FLAG_TAMP2F TAMP_SR_TAMP2F
428 #define RTC_FLAG_TAMPALL (RTC_FLAG_TAMP1F | RTC_FLAG_TAMP2F)
429 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
430 #define RTC_FLAG_TAMP1F RTC_ISR_TAMP1F
431 #define RTC_FLAG_TAMP2F RTC_ISR_TAMP2F
432 #define RTC_FLAG_TAMP3F RTC_ISR_TAMP3F
433 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
434 
438 /* ========================================================================== */
439 /* ##### Extended RTC Backup registers exported constants ##### */
440 /* ========================================================================== */
441 
445 #if defined(RTC_BKP_NUMBER)
446 #define BKP_REG_NUMBER RTC_BKP_NUMBER
447 #endif /* RTC_BKP_NUMBER */
448 #if defined(TAMP_BKP_NUMBER)
449 #define BKP_REG_NUMBER TAMP_BKP_NUMBER
450 #endif /* TAMP_BKP_NUMBER */
451 
458 #define RTC_BKP_DR0 0x00u
459 #define RTC_BKP_DR1 0x01u
460 #define RTC_BKP_DR2 0x02u
461 #define RTC_BKP_DR3 0x03u
462 #define RTC_BKP_DR4 0x04u
463 #define RTC_BKP_DR5 0x05u
464 #define RTC_BKP_DR6 0x06u
465 #define RTC_BKP_DR7 0x07u
466 #define RTC_BKP_DR8 0x08u
467 #define RTC_BKP_DR9 0x09u
468 #define RTC_BKP_DR10 0x0Au
469 #define RTC_BKP_DR11 0x0Bu
470 #define RTC_BKP_DR12 0x0Cu
471 #define RTC_BKP_DR13 0x0Du
472 #define RTC_BKP_DR14 0x0Eu
473 #define RTC_BKP_DR15 0x0Fu
474 #define RTC_BKP_DR16 0x10u
475 #define RTC_BKP_DR17 0x11u
476 #define RTC_BKP_DR18 0x12u
477 #define RTC_BKP_DR19 0x13u
478 #define RTC_BKP_DR20 0x14u
479 #define RTC_BKP_DR21 0x15u
480 #define RTC_BKP_DR22 0x16u
481 #define RTC_BKP_DR23 0x17u
482 #define RTC_BKP_DR24 0x18u
483 #define RTC_BKP_DR25 0x19u
484 #define RTC_BKP_DR26 0x1Au
485 #define RTC_BKP_DR27 0x1Bu
486 #define RTC_BKP_DR28 0x1Cu
487 #define RTC_BKP_DR29 0x1Du
488 #define RTC_BKP_DR30 0x1Eu
489 #define RTC_BKP_DR31 0x1Fu
490 
500 #if defined(STM32L412xx) || defined(STM32L422xx)
501 #define RTC_TAMPER1_INTERRUPT TAMP_IER_TAMP1IE
502 #define RTC_TAMPER2_INTERRUPT TAMP_IER_TAMP2IE
503 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
504 #if defined(RTC_TAMPER1_SUPPORT)
505 #define RTC_TAMPER1_INTERRUPT RTC_TAMPCR_TAMP1IE
506 #endif /* RTC_TAMPER1_SUPPORT */
507 #define RTC_TAMPER2_INTERRUPT RTC_TAMPCR_TAMP2IE
508 #if defined(RTC_TAMPER3_SUPPORT)
509 #define RTC_TAMPER3_INTERRUPT RTC_TAMPCR_TAMP3IE
510 #endif /* RTC_TAMPER3_SUPPORT */
511 #define RTC_ALL_TAMPER_INTERRUPT RTC_TAMPCR_TAMPIE
512 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
513 
514 
523 /* Exported macros -----------------------------------------------------------*/
528 #if defined(STM32L412xx) || defined(STM32L422xx)
529 
541 #define __HAL_RTC_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SCR = (__FLAG__))
542 
563 #define __HAL_RTC_GET_FLAG(__HANDLE__, __FLAG__) (((((__FLAG__)) >> 8U) == 1U) ? ((__HANDLE__)->Instance->ICSR & (1U << (((uint16_t)(__FLAG__)) & RTC_FLAG_MASK))) : \
564  ((__HANDLE__)->Instance->SR & (1U << (((uint16_t)(__FLAG__)) & RTC_FLAG_MASK))))
565 #endif /*#if defined(STM32L412xx) || defined(STM32L422xx) */
566 
567 /* ---------------------------------WAKEUPTIMER---------------------------------*/
576 #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
577 
583 #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
584 
593 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
594 
603 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
604 
605 
614 #if defined(STM32L412xx) || defined(STM32L422xx)
615 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->MISR) & ((__INTERRUPT__) >> 12)) != 0U) ? 1U : 0U)
616 #else
617 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4)) != 0U) ? 1U : 0U)
618 #endif
619 
628 #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
629 
639 #if defined(STM32L412xx) || defined(STM32L422xx)
640 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__), (__FLAG__)))
641 #else
642 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
643 #endif
644 
653 #if defined(STM32L412xx) || defined(STM32L422xx)
654 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_CLEAR_FLAG((__HANDLE__), RTC_CLEAR_WUTF))
655 #else
656 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
657 #endif
658 
659 
660 /* WAKE-UP TIMER EXTI */
661 /* ------------------ */
666 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
667 
672 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
673 
678 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
679 
684 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
685 
690 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
691 
696 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
697 
702 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
703 
708 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
709 
714 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() do { \
715  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE(); \
716  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE(); \
717  } while(0)
718 
724 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() do { \
725  __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE(); \
726  __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE(); \
727  } while(0)
728 
733 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() (EXTI->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
734 
739 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() (EXTI->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
740 
745 #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() (EXTI->SWIER1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
746 
751 /* ---------------------------------TIMESTAMP---------------------------------*/
760 #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
761 
767 #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
768 
777 #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
778 
787 #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
788 
797 #if defined(STM32L412xx) || defined(STM32L422xx)
798 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->MISR) & ((__INTERRUPT__) >> 12)) != 0U) ? 1U : 0U)
799 #else
800 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4)) != 0U) ? 1U : 0U)
801 #endif
802 
810 #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
811 
821 #if defined(STM32L412xx) || defined(STM32L422xx)
822 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__),(__FLAG__)))
823 #else
824 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
825 #endif
826 
836 #if defined(STM32L412xx) || defined(STM32L422xx)
837 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_CLEAR_FLAG((__HANDLE__), (__FLAG__)))
838 #else
839 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
840 #endif
841 
847 #define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE))
848 
854 #define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE))
855 
864 #if defined(STM32L412xx) || defined(STM32L422xx)
865 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__),(__FLAG__)))
866 #else
867 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
868 #endif
869 
878 #if defined(STM32L412xx) || defined(STM32L422xx)
879 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_CLEAR_FLAG((__HANDLE__), RTC_CLEAR_ITSF))
880 #else
881 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
882 #endif
883 
884 
885 #if defined(STM32L412xx) || defined(STM32L422xx)
886 
891 #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TAMPTS))
892 
898 #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TAMPTS))
899 
905 #define __HAL_RTC_TAMPOE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TAMPOE))
906 
912 #define __HAL_RTC_TAMPOE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TAMPOE))
913 
914 
918 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
919 
920 /* ------------------------------Calibration----------------------------------*/
930 #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
931 
937 #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
938 
944 #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
945 
951 #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
952 
961 #if defined(STM32L412xx) || defined(STM32L422xx)
962 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__), (__FLAG__)))
963 #else
964 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
965 #endif
966 
972 /* ------------------------------Tamper----------------------------------*/
976 #if defined(RTC_TAMPER1_SUPPORT)
977 
982 #if defined(STM32L412xx) || defined(STM32L422xx)
983 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->CR1 |= (TAMP_CR1_TAMP1E))
984 #else
985 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP1E))
986 #endif
987 
993 #if defined(STM32L412xx) || defined(STM32L422xx)
994 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->CR1 &= ~(RTC_TAMPCR_TAMP1E))
995 #else
996 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP1E))
997 #endif
998 #endif /* RTC_TAMPER1_SUPPORT */
999 
1005 #if defined(STM32L412xx) || defined(STM32L422xx)
1006 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->CR1 |= (TAMP_CR1_TAMP2E))
1007 #else
1008 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP2E))
1009 #endif
1010 
1016 #if defined(STM32L412xx) || defined(STM32L422xx)
1017 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->CR1 &= ~(RTC_TAMPCR_TAMP2E))
1018 #else
1019 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP2E))
1020 #endif
1021 
1022 #if defined(RTC_TAMPER3_SUPPORT)
1023 
1028 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP3E))
1029 
1035 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP3E))
1036 #endif /* RTC_TAMPER3_SUPPORT */
1037 
1038 /**************************************************************************************************/
1050 #if defined(STM32L412xx) || defined(STM32L422xx)
1051 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->IER |= (__INTERRUPT__))
1052 #else
1053 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->TAMPCR |= (__INTERRUPT__))
1054 #endif
1055 
1066 #if defined(STM32L412xx) || defined(STM32L422xx)
1067 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->IER &= ~(__INTERRUPT__))
1068 #else
1069 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->TAMPCR &= ~(__INTERRUPT__))
1070 #endif
1071 
1072 
1073 /**************************************************************************************************/
1085 #if defined(STM32L412xx) || defined(STM32L422xx)
1086 #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__) ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->MISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
1087 #else /* #if defined(STM32L412xx) || defined(STM32L422xx) */
1088 #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
1089 #endif /* #if defined(STM32L412xx) || defined(STM32L422xx) */
1090 
1101 #if defined(STM32L412xx) || defined(STM32L422xx)
1102 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->IER) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
1103 #else
1104 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->TAMPCR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
1105 #endif
1106 
1117 #if defined(STM32L412xx) || defined(STM32L422xx)
1118 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__) (((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->SR) & (__FLAG__)) != 0U)
1119 #else
1120 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
1121 #endif
1122 
1132 #if defined(STM32L412xx) || defined(STM32L422xx)
1133 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (__HANDLE__)->TampOffset))->SCR) = (__FLAG__))
1134 #else
1135 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
1136 #endif
1137 
1142 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1143 
1148 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1149 
1154 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1155 
1160 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1161 
1166 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1167 
1172 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1173 
1178 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1179 
1184 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1185 
1190 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() do { \
1191  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE(); \
1192  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); \
1193  } while(0)
1194 
1199 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() do { \
1200  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE(); \
1201  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE(); \
1202  } while(0)
1203 
1208 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() (EXTI->PR1 & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1209 
1214 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG() (EXTI->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1215 
1220 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT() (EXTI->SWIER1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1221 
1230 /* Exported functions --------------------------------------------------------*/
1231 
1236 /* ========================================================================== */
1237 /* ##### RTC TimeStamp exported functions ##### */
1238 /* ========================================================================== */
1239 
1240 /* RTC TimeStamp functions ****************************************************/
1241 
1245 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
1246 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
1247 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
1248 HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc);
1250 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
1253 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1258 /* ========================================================================== */
1259 /* ##### RTC Wake-up exported functions ##### */
1260 /* ========================================================================== */
1261 
1262 /* RTC Wake-up functions ******************************************************/
1263 
1267 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
1268 #if defined(STM32L412xx) || defined(STM32L422xx)
1269 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock, uint32_t WakeUpAutoClr);
1270 #else
1271 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
1272 #endif
1273 HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
1277 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1282 /* ========================================================================== */
1283 /* ##### Extended RTC Peripheral Control exported functions ##### */
1284 /* ========================================================================== */
1285 
1286 /* Extended RTC Peripheral Control functions **********************************/
1287 
1291 HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue);
1292 #if defined(STM32L412xx) || defined(STM32L422xx)
1293 HAL_StatusTypeDef HAL_RTCEx_SetLowPowerCalib(RTC_HandleTypeDef *hrtc, uint32_t LowPowerCalib);
1294 #endif
1295 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
1296 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
1298 HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);
1299 HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);
1300 HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);
1301 HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);
1306 /* Extended RTC features functions *******************************************/
1312 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1320 HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
1321 HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
1322 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
1323 
1324 #if defined(RTC_TAMPER1_SUPPORT)
1325 HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1326 #endif /* RTC_TAMPER1_SUPPORT */
1327 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1328 #if defined(RTC_TAMPER3_SUPPORT)
1329 HAL_StatusTypeDef HAL_RTCEx_PollForTamper3Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1330 #endif /* RTC_TAMPER3_SUPPORT */
1331 
1332 #if defined(RTC_TAMPER1_SUPPORT)
1334 #endif /* RTC_TAMPER1_SUPPORT */
1336 #if defined(RTC_TAMPER3_SUPPORT)
1338 #endif /* RTC_TAMPER3_SUPPORT */
1339 
1340 
1348 void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
1349 uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
1358 /* Private types -------------------------------------------------------------*/
1359 /* Private variables ---------------------------------------------------------*/
1360 /* Private constants ---------------------------------------------------------*/
1364 #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT EXTI_IMR1_IM19
1365 #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT EXTI_IMR1_IM20
1371 /* Private macros ------------------------------------------------------------*/
1372 
1379 #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
1380  ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
1381 
1382 #define IS_RTC_TAMPER_INTERRUPT(INTERRUPT) ((((INTERRUPT) & (uint32_t)0xFFB6FFFB) == 0x00) && ((INTERRUPT) != 0U))
1383 
1384 #define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT))
1385 
1386 #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16) || \
1387  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8) || \
1388  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4) || \
1389  ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2) || \
1390  ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
1391  ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
1392 
1393 #define IS_RTC_WAKEUP_COUNTER(COUNTER) ((COUNTER) <= RTC_WUTR_WUT)
1394 
1395 #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
1396  ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
1397  ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
1398 
1399 #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
1400  ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
1401 
1402 #define IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= RTC_CALR_CALM)
1403 
1404 #if defined(STM32L412xx) || defined(STM32L422xx)
1405 #define IS_RTC_LOW_POWER_CALIB(LPCAL) (((LPCAL) == RTC_LPCAL_SET) || \
1406  ((LPCAL) == RTC_LPCAL_RESET))
1407 #endif
1408 
1409 #if defined(STM32L412xx) || defined(STM32L422xx)
1410 #define IS_RTC_TAMPER(__TAMPER__) ((((__TAMPER__) & RTC_TAMPER_ALL) != 0x00U) && \
1411  (((__TAMPER__) & ~RTC_TAMPER_ALL) == 0x00U))
1412 #else
1413 #define IS_RTC_TAMPER(TAMPER) ((((TAMPER) & (uint32_t)0xFFFFFFD6) == 0x00) && ((TAMPER) != 0U))
1414 #endif
1415 
1416 
1417 #define IS_RTC_TAMPER_TRIGGER(__TRIGGER__) (((__TRIGGER__) == RTC_TAMPERTRIGGER_RISINGEDGE) || \
1418  ((__TRIGGER__) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \
1419  ((__TRIGGER__) == RTC_TAMPERTRIGGER_LOWLEVEL) || \
1420  ((__TRIGGER__) == RTC_TAMPERTRIGGER_HIGHLEVEL))
1421 
1422 #define IS_RTC_TAMPER_ERASE_MODE(__MODE__) (((__MODE__) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \
1423  ((__MODE__) == RTC_TAMPER_ERASE_BACKUP_DISABLE))
1424 
1425 #define IS_RTC_TAMPER_MASKFLAG_STATE(__STATE__) (((__STATE__) == RTC_TAMPERMASK_FLAG_ENABLE) || \
1426  ((__STATE__) == RTC_TAMPERMASK_FLAG_DISABLE))
1427 
1428 #define IS_RTC_TAMPER_FILTER(__FILTER__) (((__FILTER__) == RTC_TAMPERFILTER_DISABLE) || \
1429  ((__FILTER__) == RTC_TAMPERFILTER_2SAMPLE) || \
1430  ((__FILTER__) == RTC_TAMPERFILTER_4SAMPLE) || \
1431  ((__FILTER__) == RTC_TAMPERFILTER_8SAMPLE))
1432 
1433 #define IS_RTC_TAMPER_SAMPLING_FREQ(__FREQ__) (((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
1434  ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
1435  ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
1436  ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
1437  ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
1438  ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
1439  ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512) || \
1440  ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
1441 
1442 #define IS_RTC_TAMPER_PRECHARGE_DURATION(__DURATION__) (((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
1443  ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
1444  ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
1445  ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
1446 
1447 #define IS_RTC_TAMPER_PULLUP_STATE(__STATE__) (((__STATE__) == RTC_TAMPER_PULLUP_ENABLE) || \
1448  ((__STATE__) == RTC_TAMPER_PULLUP_DISABLE))
1449 
1450 #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(DETECTION) (((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
1451  ((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
1452 
1453 #define IS_RTC_BKP(__BKP__) ((__BKP__) < RTC_BKP_NUMBER)
1454 
1455 #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
1456  ((SEL) == RTC_SHIFTADD1S_SET))
1457 
1458 #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= RTC_SHIFTR_SUBFS)
1459 
1460 #define IS_RTC_CALIB_OUTPUT(OUTPUT) (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
1461  ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
1462 
1479 #ifdef __cplusplus
1480 }
1481 #endif /* __cplusplus */
1482 
1483 #endif /* STM32L4xx_HAL_RTC_EX_H */
1484 
1485 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin)
Set TimeStamp with Interrupt.
HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc)
Set Internal TimeStamp.
void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data)
HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc)
Deactivate TimeStamp.
HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
Handle TimeStamp polling request.
HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc)
Deactivate wake up timer counter.
HAL_StatusTypeDef uint32_t WakeUpCounter
HAL_StatusTypeDef uint32_t uint32_t WakeUpClock
HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin)
Set TimeStamp.
HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue)
void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc)
Handle Wake Up Timer interrupt request.
HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister)
This file contains HAL common defines, enumeration, macros and structures definitions.
void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc)
void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTimeStamp(RTC_HandleTypeDef *hrtc)
Deactivate Internal TimeStamp.
RTC Time structure definition.
HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput)
HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper)
HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock)
Set wake up timer.
void HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc)
Handle TimeStamp interrupt request.
HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc)
void HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_PollForTamper3Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
void HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc)
TimeStamp callback.
void HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_SetLowPowerCalib(RTC_HandleTypeDef *hrtc, uint32_t LowPowerCalib)
uint32_t HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc)
Get wake up timer counter.
HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
RTC Date structure definition.
HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper)
uint32_t TimeStampOnTamperDetection
HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format)
Get the RTC TimeStamp value.
HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS)
HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
RTC Handle Structure definition.
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper)
HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock, uint32_t WakeUpAutoClr)
Set wake up timer with interrupt.
HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout)