Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:36

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_rtc_ex.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of RTC HAL Extension module.
0006   ******************************************************************************
0007   * @attention
0008   *
0009   * Copyright (c) 2017 STMicroelectronics.
0010   * All rights reserved.
0011   *
0012   * This software is licensed under terms that can be found in the LICENSE file
0013   * in the root directory of this software component.
0014   * If no LICENSE file comes with this software, it is provided AS-IS.
0015   *
0016   ******************************************************************************
0017   */
0018 
0019 /* Define to prevent recursive inclusion -------------------------------------*/
0020 #ifndef STM32H7xx_HAL_RTC_EX_H
0021 #define STM32H7xx_HAL_RTC_EX_H
0022 
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif /* __cplusplus */
0026 
0027 /* Includes ------------------------------------------------------------------*/
0028 #include "stm32h7xx_hal_def.h"
0029 
0030 /** @addtogroup STM32H7xx_HAL_Driver
0031   * @{
0032   */
0033 
0034 /** @defgroup RTCEx RTCEx
0035   * @ingroup RTEMSBSPsARMSTM32H7
0036   * @{
0037   */
0038 
0039 /* Exported types ------------------------------------------------------------*/
0040 
0041 /** @defgroup RTCEx_Exported_Types RTCEx Exported Types
0042   * @ingroup RTEMSBSPsARMSTM32H7
0043   * @{
0044   */
0045 
0046 /** @defgroup RTCEx_Tamper_structure_definition RTC Tamper structure definition
0047   * @ingroup RTEMSBSPsARMSTM32H7
0048   * @{
0049   */
0050 typedef struct
0051 {
0052   uint32_t Tamper;                      /*!< Specifies the Tamper Pin.
0053                                              This parameter can be a value of @ref RTCEx_Tamper_Pins_Definitions */
0054 
0055   uint32_t Interrupt;                   /*!< Specifies the Tamper Interrupt.
0056                                              This parameter can be a value of @ref  RTCEx_Tamper_Interrupt_Definitions */
0057 
0058   uint32_t Trigger;                     /*!< Specifies the Tamper Trigger.
0059                                              This parameter can be a value of @ref RTCEx_Tamper_Trigger_Definitions */
0060 
0061   uint32_t NoErase;                     /*!< Specifies the Tamper no erase mode.
0062                                              This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp_Definitions */
0063 
0064   uint32_t MaskFlag;                     /*!< Specifies the Tamper Flag masking.
0065                                              This parameter can be a value of @ref RTCEx_Tamper_MaskFlag_Definitions   */
0066 
0067   uint32_t Filter;                      /*!< Specifies the TAMP Filter Tamper.
0068                                              This parameter can be a value of @ref RTCEx_Tamper_Filter_Definitions */
0069 
0070   uint32_t SamplingFrequency;           /*!< Specifies the sampling frequency.
0071                                              This parameter can be a value of @ref RTCEx_Tamper_Sampling_Frequencies_Definitions */
0072 
0073   uint32_t PrechargeDuration;           /*!< Specifies the Precharge Duration .
0074                                              This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration_Definitions */
0075 
0076   uint32_t TamperPullUp;                /*!< Specifies the Tamper PullUp .
0077                                              This parameter can be a value of @ref RTCEx_Tamper_Pull_UP_Definitions */
0078 
0079   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the TimeStampOnTamperDetection.
0080                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */
0081 } RTC_TamperTypeDef;
0082 /**
0083   * @}
0084   */
0085 
0086 #if defined(TAMP)
0087 /** @defgroup RTCEx_Internal_Tamper_structure_definition RTCEx Internal Tamper structure definition
0088   * @ingroup RTEMSBSPsARMSTM32H7
0089   * @{
0090   */
0091 typedef struct
0092 {
0093   uint32_t IntTamper;                   /*!< Specifies the Internal Tamper Pin.
0094                                              This parameter can be a value of @ref RTCEx_Internal_Tamper_Pins_Definitions */
0095 
0096   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the TimeStampOnTamperDetection.
0097                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */
0098 } RTC_InternalTamperTypeDef;
0099 /**
0100   * @}
0101   */
0102 
0103 /** @defgroup RTCEx_Active_Seed_Size Seed size Definitions
0104   * @ingroup RTEMSBSPsARMSTM32H7
0105   * @{
0106   */
0107 #define RTC_ATAMP_SEED_NB_UINT32        4U
0108 /**
0109   * @}
0110   */
0111 
0112 /** @defgroup RTCEx_Active_Tampers_Number Active Tampers number Definitions
0113   * @ingroup RTEMSBSPsARMSTM32H7
0114   * @{
0115   */
0116 #define RTC_TAMP_NB                     3u
0117 /**
0118   * @}
0119   */
0120 
0121 /** @defgroup RTCEx_ActiveTamper_structures_definition RTC Active Tamper structures definitions
0122   * @ingroup RTEMSBSPsARMSTM32H7
0123   * @{
0124   */
0125 typedef struct
0126 {
0127   uint32_t Enable;                      /*!< Specifies the Tamper input is active.
0128                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Enable */
0129 
0130   uint32_t Interrupt;                    /*!< Specifies the interrupt mode
0131                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Interrupt */
0132 
0133   uint32_t Output;                      /*!< Specifies the TAMP output to be compared with.
0134                                              The same output can be used for several tamper inputs.
0135                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Sel */
0136 
0137   uint32_t NoErase;                     /*!< Specifies the Tamper no erase mode.
0138                                              This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp_Definitions */
0139 
0140   uint32_t MaskFlag;                    /*!< Specifies the Tamper Flag masking.
0141                                              This parameter can be a value of @ref RTCEx_Tamper_MaskFlag_Definitions */
0142 
0143 } RTC_ATampInputTypeDef;
0144 
0145 
0146 typedef struct
0147 {
0148   uint32_t ActiveFilter;                /*!< Specifies the Active tamper filter enable.
0149                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Filter */
0150 
0151   uint32_t ActiveAsyncPrescaler;        /*!< Specifies the Active Tamper asynchronous Prescaler clock.
0152                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Async_prescaler */
0153 
0154   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the timeStamp on tamper detection.
0155                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */
0156 
0157   uint32_t ActiveOutputChangePeriod;    /*!< Specifies the Active Tamper output change period .
0158                                              This parameter can be a value from 0 to 7. */
0159 
0160   uint32_t Seed[RTC_ATAMP_SEED_NB_UINT32];
0161   /*!< Specifies the Active Tamper RNG Seed value .
0162        This parameter can be a value from 0 to (2^32-1) */
0163 
0164   RTC_ATampInputTypeDef TampInput[RTC_TAMP_NB];
0165   /*!< Specifies configuration of all active tampers.
0166        The index of TampInput[RTC_TAMP_NB] can be a value of RTCEx_ActiveTamper_Sel */
0167 } RTC_ActiveTampersTypeDef;
0168 
0169 /**
0170   * @}
0171   */
0172 #endif /* TAMP */
0173 
0174 /**
0175   * @}
0176   */
0177 
0178 /* Exported constants --------------------------------------------------------*/
0179 
0180 /** @defgroup RTCEx_Exported_Constants RTC Exported Constants
0181   * @ingroup RTEMSBSPsARMSTM32H7
0182   * @{
0183   */
0184 
0185 /* ========================================================================== */
0186 /*         ##### Extended RTC Backup registers exported constants #####       */
0187 /* ========================================================================== */
0188 
0189 /** @defgroup RTCEx_Backup_Registers_Number_Definitions RTC Backup Registers Number Definitions
0190   * @ingroup RTEMSBSPsARMSTM32H7
0191   * @{
0192   */
0193 #if defined(TAMP)
0194 #define BKP_REG_NUMBER                       TAMP_BKP_NUMBER
0195 #else
0196 #define BKP_REG_NUMBER                       RTC_BKP_NUMBER
0197 #endif /* TAMP */
0198 /**
0199   * @}
0200   */
0201 
0202 /** @defgroup RTCEx_Backup_Registers_Definitions RTC Backup Registers Definitions
0203   * @ingroup RTEMSBSPsARMSTM32H7
0204   * @{
0205   */
0206 #define RTC_BKP_DR0                       0x00u
0207 #define RTC_BKP_DR1                       0x01u
0208 #define RTC_BKP_DR2                       0x02u
0209 #define RTC_BKP_DR3                       0x03u
0210 #define RTC_BKP_DR4                       0x04u
0211 #define RTC_BKP_DR5                       0x05u
0212 #define RTC_BKP_DR6                       0x06u
0213 #define RTC_BKP_DR7                       0x07u
0214 #define RTC_BKP_DR8                       0x08u
0215 #define RTC_BKP_DR9                       0x09u
0216 #define RTC_BKP_DR10                      0x0Au
0217 #define RTC_BKP_DR11                      0x0Bu
0218 #define RTC_BKP_DR12                      0x0Cu
0219 #define RTC_BKP_DR13                      0x0Du
0220 #define RTC_BKP_DR14                      0x0Eu
0221 #define RTC_BKP_DR15                      0x0Fu
0222 #define RTC_BKP_DR16                      0x10u
0223 #define RTC_BKP_DR17                      0x11u
0224 #define RTC_BKP_DR18                      0x12u
0225 #define RTC_BKP_DR19                      0x13u
0226 #define RTC_BKP_DR20                      0x14u
0227 #define RTC_BKP_DR21                      0x15u
0228 #define RTC_BKP_DR22                      0x16u
0229 #define RTC_BKP_DR23                      0x17u
0230 #define RTC_BKP_DR24                      0x18u
0231 #define RTC_BKP_DR25                      0x19u
0232 #define RTC_BKP_DR26                      0x1Au
0233 #define RTC_BKP_DR27                      0x1Bu
0234 #define RTC_BKP_DR28                      0x1Cu
0235 #define RTC_BKP_DR29                      0x1Du
0236 #define RTC_BKP_DR30                      0x1Eu
0237 #define RTC_BKP_DR31                      0x1Fu
0238 /**
0239   * @}
0240   */
0241 
0242 /* ========================================================================== */
0243 /*                 ##### RTC TimeStamp exported constants #####               */
0244 /* ========================================================================== */
0245 
0246 /** @defgroup RTCEx_TimeStamp_Edges_definitions RTC TimeStamp Edges Definitions
0247   * @ingroup RTEMSBSPsARMSTM32H7
0248   *
0249   * @{
0250   */
0251 #define RTC_TIMESTAMPEDGE_RISING            0x00000000u
0252 #define RTC_TIMESTAMPEDGE_FALLING           RTC_CR_TSEDGE
0253 /**
0254   * @}
0255   */
0256 
0257 /** @defgroup RTCEx_TimeStamp_Pin_Selection RTC TimeStamp Pin Selection
0258   * @ingroup RTEMSBSPsARMSTM32H7
0259   * @{
0260   */
0261 #define RTC_TIMESTAMPPIN_DEFAULT              0x00000000u
0262 /**
0263   * @}
0264   */
0265 
0266 
0267 /* ========================================================================== */
0268 /*                    ##### RTC Tamper exported constants #####               */
0269 /* ========================================================================== */
0270 
0271 /** @defgroup RTCEx_Tamper_Pins_Definitions RTC Tamper Pins Definitions
0272   * @ingroup RTEMSBSPsARMSTM32H7
0273   * @{
0274   */
0275 #if defined(TAMP)
0276 #define RTC_TAMPER_1                       TAMP_CR1_TAMP1E
0277 #define RTC_TAMPER_2                       TAMP_CR1_TAMP2E
0278 #define RTC_TAMPER_3                       TAMP_CR1_TAMP3E
0279 #else
0280 #define RTC_TAMPER_1                       RTC_TAMPCR_TAMP1E
0281 #define RTC_TAMPER_2                       RTC_TAMPCR_TAMP2E
0282 #define RTC_TAMPER_3                       RTC_TAMPCR_TAMP3E
0283 #endif /* TAMP */
0284 
0285 #define RTC_TAMPER_ALL                     (RTC_TAMPER_1 | RTC_TAMPER_2 | RTC_TAMPER_3)
0286 /**
0287   * @}
0288   */
0289 
0290 /** @defgroup RTCEx_Tamper_Interrupt_Definitions RTC Tamper Interrupts Definitions
0291   * @ingroup RTEMSBSPsARMSTM32H7
0292   * @{
0293   */
0294 #if defined(TAMP)
0295 #define RTC_IT_TAMP1                      TAMP_IER_TAMP1IE    /*!< Enable Tamper 1 Interrupt                */
0296 #define RTC_IT_TAMP2                      TAMP_IER_TAMP2IE    /*!< Enable Tamper 2 Interrupt                */
0297 #define RTC_IT_TAMP3                      TAMP_IER_TAMP3IE    /*!< Enable Tamper 3 Interrupt                */
0298 #else
0299 #define RTC_IT_TAMP1                      RTC_TAMPCR_TAMP1IE  /*!< Enable Tamper 1 Interrupt                */
0300 #define RTC_IT_TAMP2                      RTC_TAMPCR_TAMP2IE  /*!< Enable Tamper 2 Interrupt                */
0301 #define RTC_IT_TAMP3                      RTC_TAMPCR_TAMP3IE  /*!< Enable Tamper 3 Interrupt                */
0302 #endif /* TAMP */
0303 
0304 #if defined(TAMP)
0305 #define RTC_IT_TAMP                       0x00000000u         /*!< No such feature in RTC3                   */
0306 #define RTC_IT_TAMPALL                    (RTC_IT_TAMP1 | RTC_IT_TAMP2 | RTC_IT_TAMP3)
0307 #else
0308 #define RTC_IT_TAMP                       RTC_TAMPCR_TAMPIE   /*!< Enable all Tamper Interrupts              */
0309 #define RTC_IT_TAMPALL                    RTC_IT_TAMP
0310 #endif /* TAMP */
0311 /**
0312   * @}
0313   */
0314 
0315 /** @defgroup RTCEx_Internal_Tamper_Pins_Definitions  RTCEx Internal Tamper Pins Definition
0316   * @ingroup RTEMSBSPsARMSTM32H7
0317   * @{
0318   */
0319 #if defined(TAMP)
0320 #define RTC_INT_TAMPER_1                    TAMP_CR1_ITAMP1E
0321 #define RTC_INT_TAMPER_2                    TAMP_CR1_ITAMP2E
0322 #define RTC_INT_TAMPER_3                    TAMP_CR1_ITAMP3E
0323 #define RTC_INT_TAMPER_4                    TAMP_CR1_ITAMP4E
0324 #define RTC_INT_TAMPER_5                    TAMP_CR1_ITAMP5E
0325 #define RTC_INT_TAMPER_6                    TAMP_CR1_ITAMP6E
0326 #define RTC_INT_TAMPER_8                    TAMP_CR1_ITAMP8E
0327 
0328 #define RTC_INT_TAMPER_ALL                  (RTC_INT_TAMPER_1 | RTC_INT_TAMPER_2 |\
0329                                              RTC_INT_TAMPER_3 | RTC_INT_TAMPER_4 |\
0330                                              RTC_INT_TAMPER_5 | RTC_INT_TAMPER_6 |\
0331                                              RTC_INT_TAMPER_8)
0332 #endif /* TAMP */
0333 /**
0334   * @}
0335   */
0336 
0337 /** @defgroup RTCEx_Internal_Tamper_Interrupt_Definitions  RTC Internal Tamper Interrupt
0338   * @ingroup RTEMSBSPsARMSTM32H7
0339   * @{
0340   */
0341 #if defined(TAMP)
0342 #define RTC_INTERNAL_TAMPER1_INTERRUPT     TAMP_IER_ITAMP1IE  /*!< Enable Internal Tamper 1 Interrupt   */
0343 #define RTC_INTERNAL_TAMPER2_INTERRUPT     TAMP_IER_ITAMP2IE  /*!< Enable Internal Tamper 2 Interrupt   */
0344 #define RTC_INTERNAL_TAMPER3_INTERRUPT     TAMP_IER_ITAMP3IE  /*!< Enable Internal Tamper 3 Interrupt   */
0345 #define RTC_INTERNAL_TAMPER4_INTERRUPT     TAMP_IER_ITAMP4IE  /*!< Enable Internal Tamper 4 Interrupt   */
0346 #define RTC_INTERNAL_TAMPER5_INTERRUPT     TAMP_IER_ITAMP5IE  /*!< Enable Internal Tamper 5 Interrupt   */
0347 #define RTC_INTERNAL_TAMPER6_INTERRUPT     TAMP_IER_ITAMP6IE  /*!< Enable Internal Tamper 6 Interrupt   */
0348 #define RTC_INTERNAL_TAMPER8_INTERRUPT     TAMP_IER_ITAMP8IE  /*!< Enable Internal Tamper 8 Interrupt   */
0349 #endif /* TAMP */
0350 /**
0351   * @}
0352   */
0353 
0354 /** @defgroup RTCEx_Tamper_Trigger_Definitions RTC Tamper Triggers Definitions
0355   * @ingroup RTEMSBSPsARMSTM32H7
0356   * @{
0357   */
0358 #define RTC_TAMPERTRIGGER_RISINGEDGE        0x01u  /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE     */
0359 #define RTC_TAMPERTRIGGER_FALLINGEDGE       0x02u  /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE     */
0360 #define RTC_TAMPERTRIGGER_LOWLEVEL          0x04u  /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */
0361 #define RTC_TAMPERTRIGGER_HIGHLEVEL         0x08u  /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */
0362 
0363 #if defined(TAMP)
0364 #define RTC_TAMPER_1_TRIGGER                TAMP_CR2_TAMP1TRG
0365 #define RTC_TAMPER_2_TRIGGER                TAMP_CR2_TAMP2TRG
0366 #define RTC_TAMPER_3_TRIGGER                TAMP_CR2_TAMP3TRG
0367 #else
0368 #define RTC_TAMPER_1_TRIGGER                RTC_TAMPCR_TAMP1TRG
0369 #define RTC_TAMPER_2_TRIGGER                RTC_TAMPCR_TAMP2TRG
0370 #define RTC_TAMPER_3_TRIGGER                RTC_TAMPCR_TAMP3TRG
0371 #endif /* TAMP */
0372 
0373 #define RTC_TAMPER_X_TRIGGER                (RTC_TAMPER_1_TRIGGER |\
0374                                              RTC_TAMPER_2_TRIGGER |\
0375                                              RTC_TAMPER_3_TRIGGER)
0376 /**
0377   * @}
0378   */
0379 
0380 /** @defgroup RTCEx_Tamper_EraseBackUp_Definitions RTC Tamper EraseBackUp Definitions
0381   * @ingroup RTEMSBSPsARMSTM32H7
0382 * @{
0383 */
0384 #if defined(TAMP)
0385 #define RTC_TAMPER_ERASE_BACKUP_ENABLE     0x00u
0386 #define RTC_TAMPER_ERASE_BACKUP_DISABLE    0x01u
0387 #else
0388 #define RTC_TAMPER_ERASE_BACKUP_ENABLE     0x00000000u
0389 #define RTC_TAMPER_ERASE_BACKUP_DISABLE    RTC_TAMPCR_TAMP1NOERASE
0390 #endif /* TAMP */
0391 
0392 #if defined(TAMP)
0393 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_1  TAMP_CR2_TAMP1NOERASE
0394 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_2  TAMP_CR2_TAMP2NOERASE
0395 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_3  TAMP_CR2_TAMP3NOERASE
0396 #else
0397 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_1  RTC_TAMPCR_TAMP1NOERASE
0398 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_2  RTC_TAMPCR_TAMP2NOERASE
0399 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_3  RTC_TAMPCR_TAMP3NOERASE
0400 #endif /* TAMP */
0401 
0402 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_MASK (RTC_DISABLE_BKP_ERASE_ON_TAMPER_1 |\
0403                                               RTC_DISABLE_BKP_ERASE_ON_TAMPER_2 |\
0404                                               RTC_DISABLE_BKP_ERASE_ON_TAMPER_3)
0405 /**
0406   * @}
0407   */
0408 
0409 /** @defgroup RTCEx_Tamper_MaskFlag_Definitions RTC Tamper Mask Flag Definitions
0410   * @ingroup RTEMSBSPsARMSTM32H7
0411 * @{
0412 */
0413 #if defined(TAMP)
0414 #define RTC_TAMPERMASK_FLAG_DISABLE        0x00u
0415 #define RTC_TAMPERMASK_FLAG_ENABLE         0x01u
0416 #else
0417 #define RTC_TAMPERMASK_FLAG_DISABLE        0x00000000u
0418 #define RTC_TAMPERMASK_FLAG_ENABLE         RTC_TAMPCR_TAMP1MF
0419 #endif /* TAMP */
0420 
0421 #if defined(TAMP)
0422 #define RTC_TAMPER_1_MASK_FLAG             TAMP_CR2_TAMP1MSK
0423 #define RTC_TAMPER_2_MASK_FLAG             TAMP_CR2_TAMP2MSK
0424 #define RTC_TAMPER_3_MASK_FLAG             TAMP_CR2_TAMP3MSK
0425 #else
0426 #define RTC_TAMPER_1_MASK_FLAG             RTC_TAMPCR_TAMP1MF
0427 #define RTC_TAMPER_2_MASK_FLAG             RTC_TAMPCR_TAMP2MF
0428 #define RTC_TAMPER_3_MASK_FLAG             RTC_TAMPCR_TAMP3MF
0429 #endif /* TAMP */
0430 
0431 #define RTC_TAMPER_X_MASK_FLAG             (RTC_TAMPER_1_MASK_FLAG |\
0432                                             RTC_TAMPER_2_MASK_FLAG |\
0433                                             RTC_TAMPER_3_MASK_FLAG)
0434 /**
0435   * @}
0436   */
0437 
0438 /** @defgroup RTCEx_Tamper_Filter_Definitions RTC Tamper Filter Definitions
0439   * @ingroup RTEMSBSPsARMSTM32H7
0440   * @{
0441   */
0442 #if defined(TAMP)
0443 #define RTC_TAMPERFILTER_DISABLE   0x00000000U             /*!< Tamper filter is disabled */
0444 
0445 #define RTC_TAMPERFILTER_2SAMPLE   TAMP_FLTCR_TAMPFLT_0    /*!< Tamper is activated after 2
0446                                                                  consecutive samples at the active level */
0447 #define RTC_TAMPERFILTER_4SAMPLE   TAMP_FLTCR_TAMPFLT_1    /*!< Tamper is activated after 4
0448                                                                  consecutive samples at the active level */
0449 #define RTC_TAMPERFILTER_8SAMPLE   TAMP_FLTCR_TAMPFLT      /*!< Tamper is activated after 8
0450                                                                  consecutive samples at the active level */
0451 #define RTC_TAMPERFILTER_MASK      TAMP_FLTCR_TAMPFLT      /*!< Masking all bits except those of
0452                                                                  field TAMPFLT[1:0]. */
0453 #else
0454 #define RTC_TAMPERFILTER_DISABLE   0x00000000u             /*!< Tamper filter is disabled */
0455 
0456 #define RTC_TAMPERFILTER_2SAMPLE   RTC_TAMPCR_TAMPFLT_0    /*!< Tamper is activated after 2
0457                                                                  consecutive samples at the active level */
0458 #define RTC_TAMPERFILTER_4SAMPLE   RTC_TAMPCR_TAMPFLT_1    /*!< Tamper is activated after 4
0459                                                                  consecutive samples at the active level */
0460 #define RTC_TAMPERFILTER_8SAMPLE   RTC_TAMPCR_TAMPFLT      /*!< Tamper is activated after 8
0461                                                                  consecutive samples at the active level. */
0462 #define RTC_TAMPERFILTER_MASK      RTC_TAMPCR_TAMPFLT      /*!< Masking all bits except those of
0463                                                                  field TAMPFLT[1:0]. */
0464 #endif /* TAMP */
0465 /**
0466   * @}
0467   */
0468 
0469 /** @defgroup RTCEx_Tamper_Sampling_Frequencies_Definitions RTC Tamper Sampling Frequencies Definitions
0470   * @ingroup RTEMSBSPsARMSTM32H7
0471   * @{
0472   */
0473 #if defined(TAMP)
0474 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  0x00000000U                                     /*!< Each of the tamper inputs are sampled
0475                                                                                                       with a frequency =  RTCCLK / 32768 */
0476 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  TAMP_FLTCR_TAMPFREQ_0                           /*!< Each of the tamper inputs are sampled
0477                                                                                                       with a frequency =  RTCCLK / 16384 */
0478 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   TAMP_FLTCR_TAMPFREQ_1                           /*!< Each of the tamper inputs are sampled
0479                                                                                                       with a frequency =  RTCCLK / 8192  */
0480 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled
0481                                                                                                       with a frequency =  RTCCLK / 4096  */
0482 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   TAMP_FLTCR_TAMPFREQ_2                           /*!< Each of the tamper inputs are sampled
0483                                                                                                       with a frequency =  RTCCLK / 2048  */
0484 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
0485                                                                                                       with a frequency =  RTCCLK / 1024  */
0486 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    (TAMP_FLTCR_TAMPFREQ_1 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
0487                                                                                                       with a frequency =  RTCCLK / 512   */
0488 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    TAMP_FLTCR_TAMPFREQ                             /*!< Each of the tamper inputs are sampled
0489                                                                                                       with a frequency =  RTCCLK / 256   */
0490 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK      TAMP_FLTCR_TAMPFREQ                             /*!< Masking all bits except those of
0491                                                                                                       field TAMPFREQ[2:0]*/
0492 #else
0493 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  0x00000000u                                     /*!< Each of the tamper inputs are sampled
0494                                                                                                       with a frequency =  RTCCLK / 32768 */
0495 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  RTC_TAMPCR_TAMPFREQ_0                           /*!< Each of the tamper inputs are sampled
0496                                                                                                       with a frequency =  RTCCLK / 16384 */
0497 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   RTC_TAMPCR_TAMPFREQ_1                           /*!< Each of the tamper inputs are sampled
0498                                                                                                       with a frequency =  RTCCLK / 8192  */
0499 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled
0500                                                                                                       with a frequency =  RTCCLK / 4096  */
0501 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   RTC_TAMPCR_TAMPFREQ_2                           /*!< Each of the tamper inputs are sampled
0502                                                                                                       with a frequency =  RTCCLK / 2048  */
0503 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_2)  /*!< Each of the tamper inputs are sampled
0504                                                                                                       with a frequency =  RTCCLK / 1024  */
0505 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    (RTC_TAMPCR_TAMPFREQ_1 | RTC_TAMPCR_TAMPFREQ_2)  /*!< Each of the tamper inputs are sampled
0506                                                                                                       with a frequency =  RTCCLK / 512   */
0507 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    RTC_TAMPCR_TAMPFREQ                              /*!< Each of the tamper inputs are sampled
0508                                                                                                       with a frequency =  RTCCLK / 256   */
0509 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK      RTC_TAMPCR_TAMPFREQ                             /*!< Masking all bits except those of
0510                                                                                                       field TAMPFREQ[2:0]*/
0511 #endif /* TAMP */
0512 /**
0513   * @}
0514   */
0515 
0516 /** @defgroup RTCEx_Tamper_Pin_Precharge_Duration_Definitions RTC Tamper Pin Precharge Duration Definitions
0517   * @ingroup RTEMSBSPsARMSTM32H7
0518   * @{
0519   */
0520 #if defined(TAMP)
0521 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK     0x00000000U             /*!< Tamper pins are pre-charged before
0522                                                                               sampling during 1 RTCCLK cycle  */
0523 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK     TAMP_FLTCR_TAMPPRCH_0   /*!< Tamper pins are pre-charged before
0524                                                                               sampling during 2 RTCCLK cycles */
0525 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK     TAMP_FLTCR_TAMPPRCH_1   /*!< Tamper pins are pre-charged before
0526                                                                               sampling during 4 RTCCLK cycles */
0527 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK     TAMP_FLTCR_TAMPPRCH     /*!< Tamper pins are pre-charged before
0528                                                                               sampling during 8 RTCCLK cycles */
0529 #define RTC_TAMPERPRECHARGEDURATION_MASK        TAMP_FLTCR_TAMPPRCH     /*!< Masking all bits except those of
0530                                                                               field TAMPPRCH[1:0] */
0531 #else
0532 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK     0x00000000u             /*!< Tamper pins are pre-charged before
0533                                                                               sampling during 1 RTCCLK cycle  */
0534 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK     RTC_TAMPCR_TAMPPRCH_0   /*!< Tamper pins are pre-charged before
0535                                                                               sampling during 2 RTCCLK cycles */
0536 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK     RTC_TAMPCR_TAMPPRCH_1   /*!< Tamper pins are pre-charged before
0537                                                                               sampling during 4 RTCCLK cycles */
0538 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK     RTC_TAMPCR_TAMPPRCH     /*!< Tamper pins are pre-charged before
0539                                                                               sampling during 8 RTCCLK cycles */
0540 #define RTC_TAMPERPRECHARGEDURATION_MASK        RTC_TAMPCR_TAMPPRCH     /*!< Masking all bits except those of
0541                                                                               field TAMPPRCH[1:0] */
0542 #endif /* TAMP */
0543 /**
0544   * @}
0545   */
0546 
0547 /** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection_Definitions RTC Tamper TimeStamp On Tamper Detection Definitions
0548   * @ingroup RTEMSBSPsARMSTM32H7
0549   * @{
0550   */
0551 #if defined(TAMP)
0552 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE  0x00000000u                   /*!< TimeStamp on Tamper Detection event is not saved */
0553 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE   RTC_CR_TAMPTS                 /*!< TimeStamp on Tamper Detection event saved        */
0554 #define RTC_TIMESTAMPONTAMPERDETECTION_MASK     RTC_CR_TAMPTS                 /*!< Masking all bits except bit TAMPTS               */
0555 #else
0556 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE  0x00000000u                   /*!< TimeStamp on Tamper Detection event is not saved */
0557 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE   RTC_TAMPCR_TAMPTS             /*!< TimeStamp on Tamper Detection event saved        */
0558 #define RTC_TIMESTAMPONTAMPERDETECTION_MASK     RTC_TAMPCR_TAMPTS             /*!< Masking all bits except bit TAMPTS               */
0559 #endif /* TAMP */
0560 /**
0561   * @}
0562   */
0563 
0564 /** @defgroup RTCEx_Tamper_Pull_UP_Definitions RTC Tamper Pull Up Definitions
0565   * @ingroup RTEMSBSPsARMSTM32H7
0566   * @{
0567   */
0568 #if defined(TAMP)
0569 #define RTC_TAMPER_PULLUP_ENABLE           0x00000000u              /*!< Tamper pins are pre-charged before sampling */
0570 #define RTC_TAMPER_PULLUP_DISABLE          TAMP_FLTCR_TAMPPUDIS     /*!< Tamper pins pre-charge is disabled          */
0571 #define RTC_TAMPER_PULLUP_MASK             TAMP_FLTCR_TAMPPUDIS     /*!< Maskin all bits except bit TAMPPUDIS        */
0572 #else
0573 #define RTC_TAMPER_PULLUP_ENABLE           0x00000000u              /*!< TimeStamp on Tamper Detection event saved        */
0574 #define RTC_TAMPER_PULLUP_DISABLE          RTC_TAMPCR_TAMPPUDIS     /*!< TimeStamp on Tamper Detection event is not saved */
0575 #define RTC_TAMPER_PULLUP_MASK             RTC_TAMPCR_TAMPPUDIS     /*!< Maskin all bits except bit TAMPPUDIS        */
0576 #endif /* TAMP */
0577 /**
0578   * @}
0579   */
0580 
0581 /** @defgroup RTCEx_Tamper_DetectionOutput_Definitions RTC Tamper Detection Output Definitions
0582   * @ingroup RTEMSBSPsARMSTM32H7
0583   * @{
0584   */
0585 #if defined(TAMP)
0586 #define RTC_TAMPERDETECTIONOUTPUT_DISABLE  0x00000000u                   /*!< The tamper flag is not routed on TAMPALRM */
0587 #define RTC_TAMPERDETECTIONOUTPUT_ENABLE   RTC_CR_TAMPOE                 /*!< The tamper flag is routed on TAMPALRM combined with the signal
0588                                                                                provided by OSEL and with the polarity provided by POL */
0589 #endif  /* TAMP */
0590 /**
0591   * @}
0592   */
0593 
0594 /** @defgroup RTC_Tamper_Flags_Definitions RTC Tamper Flags Definitions
0595   * @ingroup RTEMSBSPsARMSTM32H7
0596   * @{
0597   */
0598 #if defined(TAMP)
0599 #define RTC_FLAG_TAMP1F                   TAMP_SR_TAMP1F
0600 #define RTC_FLAG_TAMP2F                   TAMP_SR_TAMP2F
0601 #define RTC_FLAG_TAMP3F                   TAMP_SR_TAMP3F
0602 #else
0603 #define RTC_FLAG_TAMP1F                   RTC_ISR_TAMP1F
0604 #define RTC_FLAG_TAMP2F                   RTC_ISR_TAMP2F
0605 #define RTC_FLAG_TAMP3F                   RTC_ISR_TAMP3F
0606 #endif /* TAMP */
0607 /**
0608   * @}
0609   */
0610 
0611 /** @defgroup RTCEx_ActiveTamper_Enable RTCEx_ActiveTamper_Enable Definitions
0612   * @ingroup RTEMSBSPsARMSTM32H7
0613   * @{
0614   */
0615 #define RTC_ATAMP_ENABLE                   1u
0616 #define RTC_ATAMP_DISABLE                  0u
0617 /**
0618   * @}
0619   */
0620 
0621 /** @defgroup RTCEx_ActiveTamper_Interrupt RTCEx_ActiveTamper_Interrupt Definitions
0622   * @ingroup RTEMSBSPsARMSTM32H7
0623   * @{
0624   */
0625 #define RTC_ATAMP_INTERRUPT_ENABLE        1u
0626 #define RTC_ATAMP_INTERRUPT_DISABLE       0u
0627 /**
0628   * @}
0629   */
0630 
0631 /** @defgroup RTCEx_ActiveTamper_Filter RTCEx_ActiveTamper_Filter Definitions
0632   * @ingroup RTEMSBSPsARMSTM32H7
0633   * @{
0634   */
0635 #define RTC_ATAMP_FILTER_ENABLE           TAMP_ATCR1_FLTEN
0636 #define RTC_ATAMP_FILTER_DISABLE          0u
0637 /**
0638   * @}
0639   */
0640 
0641 /** @defgroup RTCEx_ActiveTamper_Async_prescaler RTC Active_Tamper_Asynchronous_Prescaler clock Definitions
0642   * @ingroup RTEMSBSPsARMSTM32H7
0643   * @{
0644   */
0645 #define RTC_ATAMP_ASYNCPRES_RTCCLK        0u                                                                      /*!< RTCCLK */
0646 #define RTC_ATAMP_ASYNCPRES_RTCCLK_2      TAMP_ATCR1_ATCKSEL_0                                                    /*!< RTCCLK/2 */
0647 #define RTC_ATAMP_ASYNCPRES_RTCCLK_4      TAMP_ATCR1_ATCKSEL_1                                                    /*!< RTCCLK/4 */
0648 #define RTC_ATAMP_ASYNCPRES_RTCCLK_8     (TAMP_ATCR1_ATCKSEL_1 | TAMP_ATCR1_ATCKSEL_0)                            /*!< RTCCLK/8 */
0649 #define RTC_ATAMP_ASYNCPRES_RTCCLK_16     TAMP_ATCR1_ATCKSEL_2                                                    /*!< RTCCLK/16 */
0650 #define RTC_ATAMP_ASYNCPRES_RTCCLK_32    (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_0)                            /*!< RTCCLK/32 */
0651 #define RTC_ATAMP_ASYNCPRES_RTCCLK_64    (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_1)                            /*!< RTCCLK/64 */
0652 #define RTC_ATAMP_ASYNCPRES_RTCCLK_128   (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_1 | TAMP_ATCR1_ATCKSEL_0)     /*!< RTCCLK/128 */
0653 /**
0654   * @}
0655   */
0656 
0657 /** @defgroup RTCEx_ActiveTamper_Sel  RTC Active Tamper selection Definition
0658   * @ingroup RTEMSBSPsARMSTM32H7
0659   * @{
0660   */
0661 #define RTC_ATAMP_1                       0u   /*!< Tamper 1 */
0662 #define RTC_ATAMP_2                       1u   /*!< Tamper 2 */
0663 #define RTC_ATAMP_3                       2u   /*!< Tamper 3 */
0664 #define RTC_ATAMP_4                       3u   /*!< Tamper 4 */
0665 #define RTC_ATAMP_5                       4u   /*!< Tamper 5 */
0666 #define RTC_ATAMP_6                       5u   /*!< Tamper 6 */
0667 #define RTC_ATAMP_7                       6u   /*!< Tamper 7 */
0668 #define RTC_ATAMP_8                       7u   /*!< Tamper 8 */
0669 /**
0670   * @}
0671   */
0672 
0673 /** @defgroup RTCEx_MonotonicCounter_Instance  RTCEx Monotonic Counter Instance Definition
0674   * @ingroup RTEMSBSPsARMSTM32H7
0675   * @{
0676   */
0677 #define RTC_MONOTONIC_COUNTER_1           0u   /*!< Monotonic counter 1 */
0678 /**
0679   * @}
0680   */
0681 
0682 /** @defgroup RTCEx_Tamper_Registers_Offset  RTC Tamper Registers Offset
0683   * @ingroup RTEMSBSPsARMSTM32H7
0684   * @{
0685   */
0686 #if defined(TAMP)
0687 /* Add this offset to RTC registers base address to reach TAMP registers base address. */
0688 #define TAMP_OFFSET (TAMP_BASE - RTC_BASE)
0689 #endif /* TAMP */
0690 /**
0691   * @}
0692   */
0693 
0694 /* ========================================================================== */
0695 /*                   ##### RTC Wake-up exported constants #####               */
0696 /* ========================================================================== */
0697 
0698 /** @defgroup RTCEx_Wakeup_Timer_Definitions RTC Wakeup Timer Definitions
0699   * @ingroup RTEMSBSPsARMSTM32H7
0700   * @{
0701   */
0702 #define RTC_WAKEUPCLOCK_RTCCLK_DIV16        0x00000000u
0703 #define RTC_WAKEUPCLOCK_RTCCLK_DIV8         RTC_CR_WUCKSEL_0
0704 #define RTC_WAKEUPCLOCK_RTCCLK_DIV4         RTC_CR_WUCKSEL_1
0705 #define RTC_WAKEUPCLOCK_RTCCLK_DIV2         (RTC_CR_WUCKSEL_0 | RTC_CR_WUCKSEL_1)
0706 #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS      RTC_CR_WUCKSEL_2
0707 #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS      (RTC_CR_WUCKSEL_1 | RTC_CR_WUCKSEL_2)
0708 /**
0709   * @}
0710   */
0711 
0712 /* ========================================================================== */
0713 /*        ##### Extended RTC Peripheral Control exported constants #####      */
0714 /* ========================================================================== */
0715 
0716 /** @defgroup RTCEx_Smooth_calib_period_Definitions RTC Smooth Calib Period Definitions
0717   * @ingroup RTEMSBSPsARMSTM32H7
0718   * @{
0719   */
0720 #define RTC_SMOOTHCALIB_PERIOD_32SEC   0x00000000u             /*!< If RTCCLK = 32768 Hz, Smooth calibration
0721                                                                     period is 32s,  else 2exp20 RTCCLK pulses */
0722 #define RTC_SMOOTHCALIB_PERIOD_16SEC   RTC_CALR_CALW16         /*!< If RTCCLK = 32768 Hz, Smooth calibration
0723                                                                     period is 16s, else 2exp19 RTCCLK pulses */
0724 #define RTC_SMOOTHCALIB_PERIOD_8SEC    RTC_CALR_CALW8          /*!< If RTCCLK = 32768 Hz, Smooth calibration
0725                                                                     period is 8s, else 2exp18 RTCCLK pulses */
0726 /**
0727   * @}
0728   */
0729 
0730 /** @defgroup RTCEx_Smooth_calib_Plus_pulses_Definitions RTC Smooth Calib Plus pulses Definitions
0731   * @ingroup RTEMSBSPsARMSTM32H7
0732   * @{
0733   */
0734 #define RTC_SMOOTHCALIB_PLUSPULSES_SET    RTC_CALR_CALP           /*!< The number of RTCCLK pulses added
0735                                                                        during a X -second window = Y - CALM[8:0]
0736                                                                        with Y = 512, 256, 128 when X = 32, 16, 8 */
0737 #define RTC_SMOOTHCALIB_PLUSPULSES_RESET  0x00000000u             /*!< The number of RTCCLK pulses subbstited
0738                                                                        during a 32-second window = CALM[8:0] */
0739 /**
0740   * @}
0741   */
0742 
0743 /** @defgroup RTCEx_Calib_Output_selection_Definitions RTC Calib Output Selection Definitions
0744   * @ingroup RTEMSBSPsARMSTM32H7
0745   * @{
0746   */
0747 #define RTC_CALIBOUTPUT_512HZ            0x00000000u
0748 #define RTC_CALIBOUTPUT_1HZ              RTC_CR_COSEL
0749 /**
0750   * @}
0751   */
0752 
0753 /** @defgroup RTCEx_Add_1_Second_Parameter_Definitions RTC Add 1 Second Parameter Definitions
0754   * @ingroup RTEMSBSPsARMSTM32H7
0755   * @{
0756   */
0757 #define RTC_SHIFTADD1S_RESET      0x00000000u
0758 #define RTC_SHIFTADD1S_SET        RTC_SHIFTR_ADD1S
0759 /**
0760   * @}
0761   */
0762 
0763 /**
0764   * @}
0765   */
0766 
0767 /* Exported macros -----------------------------------------------------------*/
0768 
0769 /** @defgroup RTCEx_Exported_Macros RTC Exported Macros
0770   * @ingroup RTEMSBSPsARMSTM32H7
0771   * @{
0772   */
0773 
0774 /* ========================================================================== */
0775 /*                    ##### RTC Wake-up exported macros #####                 */
0776 /* ========================================================================== */
0777 
0778 /**
0779   * @brief  Enable the RTC WakeUp Timer peripheral.
0780   * @param  __HANDLE__ specifies the RTC handle.
0781   * @retval None
0782   */
0783 #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__)                     ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
0784 
0785 /**
0786   * @brief  Disable the RTC WakeUp Timer peripheral.
0787   * @param  __HANDLE__ specifies the RTC handle.
0788   * @retval None
0789   */
0790 #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__)                    ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
0791 
0792 /**
0793   * @brief  Enable the RTC WakeUpTimer interrupt.
0794   * @param  __HANDLE__ specifies the RTC handle.
0795   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled.
0796   *         This parameter can be:
0797   *            @arg @ref RTC_IT_WUT WakeUpTimer interrupt
0798   * @retval None
0799   */
0800 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
0801 
0802 /**
0803   * @brief  Disable the RTC WakeUpTimer interrupt.
0804   * @param  __HANDLE__ specifies the RTC handle.
0805   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be disabled.
0806   *         This parameter can be:
0807   *            @arg @ref RTC_IT_WUT WakeUpTimer interrupt
0808   * @retval None
0809   */
0810 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
0811 
0812 /**
0813   * @brief  Check whether the specified RTC WakeUpTimer interrupt has occurred or not.
0814   * @param  __HANDLE__ specifies the RTC handle.
0815   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to check.
0816   *         This parameter can be:
0817   *            @arg RTC_FLAG_WUTF WakeUpTimer interrupt flag
0818   * @retval None
0819   */
0820 #if defined(TAMP)
0821 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->SR)  & (__INTERRUPT__)) != 0U) ? 1U : 0U)
0822 #else
0823 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
0824 #endif /* TAMP */
0825 
0826 /**
0827   * @brief  Check whether the specified RTC Wake Up timer interrupt has been enabled or not.
0828   * @param  __HANDLE__ specifies the RTC handle.
0829   * @param  __INTERRUPT__ specifies the RTC Wake Up timer interrupt sources to check.
0830   *         This parameter can be:
0831   *            @arg @ref RTC_IT_WUT  WakeUpTimer interrupt
0832   * @retval None
0833   */
0834 #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)   (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
0835 
0836 #if defined(TAMP)
0837 /**
0838   * @brief  Get the selected RTC WakeUpTimer's flag status.
0839   * @param  __HANDLE__ specifies the RTC handle.
0840   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag sources to check.
0841   *          This parameter can be:
0842   *             @arg @ref RTC_FLAG_WUTF
0843   * @retval Flag status
0844   */
0845 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)   (((((__HANDLE__)->Instance->SR)  & (__FLAG__)) != 0U) ? 1U : 0U)
0846 #else
0847 /**
0848   * @brief  Get the selected RTC WakeUpTimer's flag status.
0849   * @param  __HANDLE__ specifies the RTC handle.
0850   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag sources to check.
0851   *          This parameter can be:
0852   *             @arg @ref RTC_FLAG_WUTF
0853   *             @arg @ref RTC_FLAG_WUTWF
0854   * @retval Flag status
0855   */
0856 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)   (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
0857 #endif /* TAMP */
0858 
0859 /**
0860   * @brief  Clear the RTC Wake Up timer's pending flags.
0861   * @param  __HANDLE__ specifies the RTC handle.
0862   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag to clear.
0863   *         This parameter can be:
0864   *            @arg @ref RTC_FLAG_WUTF
0865   * @retval None
0866   */
0867 #if defined(TAMP)
0868 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SCR |= __FLAG__)
0869 #else
0870 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
0871 #endif /* TAMP */
0872 
0873 /* ========================================================================== */
0874 /*                     ##### RTC Tamper exported macros #####                 */
0875 /* ========================================================================== */
0876 
0877 /**
0878   * @brief  Enable the RTC Tamper1 input detection.
0879   * @param  __HANDLE__ specifies the RTC handle.
0880   * @retval None
0881   */
0882 #if defined(TAMP)
0883 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__)           (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP1E))
0884 #else
0885 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__)           ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP1E))
0886 #endif /* TAMP */
0887 
0888 /**
0889   * @brief  Disable the RTC Tamper1 input detection.
0890   * @param  __HANDLE__ specifies the RTC handle.
0891   * @retval None
0892   */
0893 #if defined(TAMP)
0894 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP1E))
0895 #else
0896 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP1E))
0897 #endif /* TAMP */
0898 
0899 /**
0900   * @brief  Enable the RTC Tamper2 input detection.
0901   * @param  __HANDLE__ specifies the RTC handle.
0902   * @retval None
0903   */
0904 #if defined(TAMP)
0905 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__)           (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP2E))
0906 #else
0907 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__)           ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP2E))
0908 #endif /* TAMP */
0909 
0910 /**
0911   * @brief  Disable the RTC Tamper2 input detection.
0912   * @param  __HANDLE__ specifies the RTC handle.
0913   * @retval None
0914   */
0915 #if defined(TAMP)
0916 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP2E))
0917 #else
0918 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP2E))
0919 #endif /* TAMP */
0920 
0921 /**
0922   * @brief  Enable the RTC Tamper3 input detection.
0923   * @param  __HANDLE__ specifies the RTC handle.
0924   * @retval None
0925   */
0926 #if defined(TAMP)
0927 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP3E))
0928 #else
0929 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP3E))
0930 #endif /* TAMP */
0931 
0932 /**
0933   * @brief  Disable the RTC Tamper3 input detection.
0934   * @param  __HANDLE__ specifies the RTC handle.
0935   * @retval None
0936   */
0937 #if defined(TAMP)
0938 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP3E))
0939 #else
0940 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP3E))
0941 #endif /* TAMP */
0942 
0943 /**
0944   * @brief  Enable the RTC Tamper interrupt.
0945   * @param  __HANDLE__ specifies the RTC handle.
0946   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be enabled.
0947   *          This parameter can be any combination of the following values:
0948   *             @arg  RTC_IT_TAMPALL: All tampers interrupts
0949   *             @arg  RTC_IT_TAMP1: Tamper1 interrupt
0950   *             @arg  RTC_IT_TAMP2: Tamper2 interrupt
0951   *             @arg  RTC_IT_TAMP3: Tamper3 interrupt
0952   * @retval None
0953   */
0954 #if defined(TAMP)
0955 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__)        (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER |= (__INTERRUPT__))
0956 #else
0957 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__)        ((__HANDLE__)->Instance->TAMPCR |= (__INTERRUPT__))
0958 #endif /* TAMP */
0959 
0960 /**
0961   * @brief  Disable the RTC Tamper interrupt.
0962   * @param  __HANDLE__ specifies the RTC handle.
0963   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be disabled.
0964   *         This parameter can be any combination of the following values:
0965   *            @arg  RTC_IT_TAMP: All tampers interrupts
0966   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
0967   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt
0968   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt
0969   * @retval None
0970   */
0971 #if defined(TAMP)
0972 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__)       (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER &= ~(__INTERRUPT__))
0973 #else
0974 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__)       ((__HANDLE__)->Instance->TAMPCR &= ~(__INTERRUPT__))
0975 #endif /* TAMP */
0976 
0977 /**
0978   * @brief  Check whether the specified RTC Tamper interrupt has been enabled or not.
0979   * @param  __HANDLE__ specifies the RTC handle.
0980   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt source to check.
0981   *         This parameter can be:
0982   *            @arg  RTC_IT_TAMPALL: All tampers interrupts
0983   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
0984   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt
0985   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt
0986   * @retval Flag status
0987   */
0988 #if defined(TAMP)
0989 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)    ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
0990 #else
0991 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)    (((((__HANDLE__)->Instance->TAMPCR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
0992 #endif /* TAMP */
0993 
0994 /**
0995   * @brief  Get the selected RTC Tamper's flag status.
0996   * @param  __HANDLE__ specifies the RTC handle.
0997   * @param  __FLAG__ specifies the RTC Tamper Flag is pending or not.
0998   *          This parameter can be:
0999   *             @arg RTC_FLAG_TAMP1F: Tamper1 flag
1000   *             @arg RTC_FLAG_TAMP2F: Tamper2 flag
1001   *             @arg RTC_FLAG_TAMP3F: Tamper3 flag
1002   * @retval Flag status
1003   */
1004 #if defined(TAMP)
1005 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)   ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->SR) & (__FLAG__)) != 0U) ? 1U : 0U)
1006 #else
1007 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)                                (((((__HANDLE__)->Instance->ISR)                 & (__FLAG__)) != 0U) ? 1U : 0U)
1008 #endif /* TAMP */
1009 
1010 /**
1011   * @brief  Clear the RTC Tamper's pending flags.
1012   * @param  __HANDLE__ specifies the RTC handle.
1013   * @param  __FLAG__ specifies the RTC Tamper Flag to clear.
1014   *          This parameter can be:
1015   *             @arg RTC_FLAG_TAMP1F: Tamper1 flag
1016   *             @arg RTC_FLAG_TAMP2F: Tamper2 flag
1017   *             @arg RTC_FLAG_TAMP3F: Tamper3 flag
1018   * @retval None
1019   */
1020 #if defined(TAMP)
1021 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->SCR) |= (__FLAG__))
1022 #else
1023 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
1024 #endif /* TAMP */
1025 
1026 /**
1027   * @brief  Get the frequency at which each of the Tamper inputs are sampled.
1028   * @param  __HANDLE__ specifies the RTC handle.
1029   * @retval Sampling frequency
1030   *         This value can be:
1031   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768
1032   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384
1033   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192
1034   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096
1035   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048
1036   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512
1037   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256
1038   */
1039 #if defined(TAMP)
1040 #define __HAL_RTC_TAMPER_GET_SAMPLING_FREQ(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK)))
1041 #else
1042 #define __HAL_RTC_TAMPER_GET_SAMPLING_FREQ(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK)))
1043 #endif /* TAMP */
1044 
1045 /**
1046   * @brief  Get the number of consecutive samples at the specified level needed
1047   *         to activate a Tamper event.
1048   * @param  __HANDLE__ specifies the RTC handle.
1049   * @retval Number of consecutive samples
1050   *         This value can be:
1051   *            @arg RTC_TAMPERFILTER_DISABLE
1052   *            @arg RTC_TAMPERFILTER_2SAMPLE
1053   *            @arg RTC_TAMPERFILTER_4SAMPLE
1054   *            @arg RTC_TAMPERFILTER_8SAMPLE
1055   */
1056 #if defined(TAMP)
1057 #define __HAL_RTC_TAMPER_GET_SAMPLES_COUNT(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERFILTER_MASK)))
1058 #else
1059 #define __HAL_RTC_TAMPER_GET_SAMPLES_COUNT(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERFILTER_MASK)))
1060 #endif /* TAMP */
1061 
1062 /**
1063   * @brief  Get the pull-up resistors precharge duration.
1064   * @param  __HANDLE__ specifies the RTC handle.
1065   * @retval Number of consecutive samples
1066   *         This value can be:
1067   *            @arg RTC_TAMPERPRECHARGEDURATION_1RTCCLK
1068   *            @arg RTC_TAMPERPRECHARGEDURATION_2RTCCLK
1069   *            @arg RTC_TAMPERPRECHARGEDURATION_4RTCCLK
1070   *            @arg RTC_TAMPERPRECHARGEDURATION_8RTCCLK
1071   */
1072 #if defined(TAMP)
1073 #define __HAL_RTC_TAMPER_GET_PRCHRG_DURATION(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERPRECHARGEDURATION_MASK)))
1074 #else
1075 #define __HAL_RTC_TAMPER_GET_PRCHRG_DURATION(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERPRECHARGEDURATION_MASK)))
1076 #endif /* TAMP */
1077 
1078 /**
1079   * @brief  Get the pull-up resistors status.
1080   * @param  __HANDLE__ specifies the RTC handle.
1081   * @retval Pull-up resistors status
1082   *         This value can be:
1083   *            @arg RTC_TAMPER_PULLUP_ENABLE
1084   *            @arg RTC_TAMPER_PULLUP_DISABLE
1085   */
1086 #if defined(TAMP)
1087 #define __HAL_RTC_TAMPER_GET_PULLUP_STATUS(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPER_PULLUP_MASK)))
1088 #else
1089 #define __HAL_RTC_TAMPER_GET_PULLUP_STATUS(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPER_PULLUP_MASK)))
1090 #endif /* TAMP */
1091 
1092 /* ========================================================================== */
1093 /*                  ##### RTC TimeStamp exported macros #####                 */
1094 /* ========================================================================== */
1095 
1096 /**
1097   * @brief  Enable the RTC TimeStamp peripheral.
1098   * @param  __HANDLE__ specifies the RTC handle.
1099   * @retval None
1100   */
1101 #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
1102 
1103 /**
1104   * @brief  Disable the RTC TimeStamp peripheral.
1105   * @param  __HANDLE__ specifies the RTC handle.
1106   * @retval None
1107   */
1108 #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
1109 
1110 /**
1111   * @brief  Enable the RTC TimeStamp interrupt.
1112   * @param  __HANDLE__ specifies the RTC handle.
1113   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be enabled.
1114   *         This parameter can be:
1115   *            @arg @ref RTC_IT_TS TimeStamp interrupt
1116   * @retval None
1117   */
1118 #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
1119 
1120 /**
1121   * @brief  Disable the RTC TimeStamp interrupt.
1122   * @param  __HANDLE__ specifies the RTC handle.
1123   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be disabled.
1124   *         This parameter can be:
1125   *            @arg @ref RTC_IT_TS TimeStamp interrupt
1126   * @retval None
1127   */
1128 #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
1129 
1130 /**
1131   * @brief  Check whether the specified RTC TimeStamp interrupt has occurred or not.
1132   * @param  __HANDLE__ specifies the RTC handle.
1133   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt source to check.
1134   *         This parameter can be:
1135   *            @arg @ref RTC_IT_TS TimeStamp interrupt
1136   * @retval None
1137   */
1138 #if defined(TAMP)
1139 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)        (((((__HANDLE__)->Instance->MISR) & ((__INTERRUPT__) >> 12)) != 0U) ? 1U : 0U)
1140 #else
1141 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)        (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
1142 #endif /* TAMP */
1143 /**
1144   * @brief  Check whether the specified RTC Time Stamp interrupt has been enabled or not.
1145   * @param  __HANDLE__ specifies the RTC handle.
1146   * @param  __INTERRUPT__ specifies the RTC Time Stamp interrupt source to check.
1147   *         This parameter can be:
1148   *            @arg @ref RTC_IT_TS TimeStamp interrupt
1149   * @retval None
1150   */
1151 #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
1152 
1153 /**
1154   * @brief  Get the selected RTC TimeStamp's flag status.
1155   * @param  __HANDLE__ specifies the RTC handle.
1156   * @param  __FLAG__ specifies the RTC TimeStamp Flag is pending or not.
1157   *         This parameter can be:
1158   *            @arg RTC_FLAG_TSF
1159   *            @arg RTC_FLAG_TSOVF
1160   * @retval Flag status
1161   */
1162 #if defined(TAMP)
1163 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)     (((((__HANDLE__)->Instance->SR)  & (__FLAG__)) != 0U) ? 1U : 0U)
1164 #else
1165 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)     (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
1166 #endif /* TAMP */
1167 
1168 /**
1169   * @brief  Clear the RTC Time Stamp's pending flags.
1170   * @param  __HANDLE__ specifies the RTC handle.
1171   * @param  __FLAG__ specifies the RTC Alarm Flag sources to clear.
1172   *          This parameter can be:
1173   *             @arg RTC_FLAG_TSF
1174   *             @arg RTC_FLAG_TSOVF
1175   * @retval None
1176   */
1177 #if defined(TAMP)
1178 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->SCR |= __FLAG__)
1179 #else
1180 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->ISR = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)))
1181 #endif /* TAMP */
1182 
1183 /**
1184   * @brief  Enable the RTC internal TimeStamp peripheral.
1185   * @param  __HANDLE__ specifies the RTC handle.
1186   * @retval None
1187   */
1188 #define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE))
1189 
1190 /**
1191   * @brief  Disable the RTC internal TimeStamp peripheral.
1192   * @param  __HANDLE__ specifies the RTC handle.
1193   * @retval None
1194   */
1195 #define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE))
1196 
1197 /**
1198   * @brief  Get the selected RTC Internal Time Stamp's flag status.
1199   * @param  __HANDLE__ specifies the RTC handle.
1200   * @param  __FLAG__ specifies the RTC Internal Time Stamp Flag is pending or not.
1201   *         This parameter can be:
1202   *            @arg RTC_FLAG_ITSF
1203   * @retval Flag status
1204   */
1205 #if defined(TAMP)
1206 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)    (((((__HANDLE__)->Instance->SR)  & (__FLAG__)) != 0U) ? 1U : 0U)
1207 #else
1208 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)    (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
1209 #endif /* TAMP */
1210 
1211 /**
1212   * @brief  Clear the RTC Internal Time Stamp's pending flags.
1213   * @param  __HANDLE__ specifies the RTC handle.
1214   * @param  __FLAG__ specifies the RTC Internal Time Stamp Flag source to clear.
1215   *          This parameter can be:
1216   *             @arg RTC_FLAG_ITSF
1217   * @note   This flag must be cleared together with TSF flag.
1218   * @retval None
1219   */
1220 #if defined(TAMP)
1221 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->SCR |= __FLAG__)
1222 #else
1223 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->ISR = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)))
1224 #endif /* TAMP */
1225 
1226 /**
1227   * @brief  Enable the RTC TimeStamp on Tamper detection.
1228   * @param  __HANDLE__ specifies the RTC handle.
1229   * @retval None
1230   */
1231 #if defined(TAMP)
1232 #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_TIMESTAMPONTAMPERDETECTION_MASK))
1233 #else
1234 #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->TAMPCR |= (RTC_TIMESTAMPONTAMPERDETECTION_MASK))
1235 #endif /* TAMP */
1236 
1237 /**
1238   * @brief  Disable the RTC TimeStamp on Tamper detection.
1239   * @param  __HANDLE__ specifies the RTC handle.
1240   * @retval None
1241   */
1242 #if defined(TAMP)
1243 #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_TIMESTAMPONTAMPERDETECTION_MASK))
1244 #else
1245 #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TIMESTAMPONTAMPERDETECTION_MASK))
1246 #endif /* TAMP */
1247 
1248 /**
1249   * @brief  Get activation status of the RTC TimeStamp on Tamper detection.
1250   * @param  __HANDLE__ specifies the RTC handle.
1251   * @retval Activation status of TimeStamp on Tamper detection
1252   *         This value can be:
1253   *            @arg RTC_TIMESTAMPONTAMPERDETECTION_ENABLE
1254   *            @arg RTC_TIMESTAMPONTAMPERDETECTION_DISABLE
1255   */
1256 #if defined(TAMP)
1257 #define __HAL_RTC_TAMPTS_GET_STATUS(__HANDLE__)                   ((__HANDLE__)->Instance->CR &= RTC_TIMESTAMPONTAMPERDETECTION_MASK)
1258 #else
1259 #define __HAL_RTC_TAMPTS_GET_STATUS(__HANDLE__)                   ((__HANDLE__)->Instance->TAMPCR &= RTC_TIMESTAMPONTAMPERDETECTION_MASK)
1260 #endif /* TAMP */
1261 
1262 #if defined(TAMP)
1263 /**
1264   * @brief  Enable the RTC Tamper detection output.
1265   * @param  __HANDLE__ specifies the RTC handle.
1266   * @retval None
1267   */
1268 #define __HAL_RTC_TAMPOE_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_CR_TAMPOE))
1269 
1270 /**
1271   * @brief  Disable the RTC Tamper detection output.
1272   * @param  __HANDLE__ specifies the RTC handle.
1273   * @retval None
1274   */
1275 #define __HAL_RTC_TAMPOE_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TAMPOE))
1276 #endif /* TAMP */
1277 
1278 /* ========================================================================== */
1279 /*         ##### Extended RTC Peripheral Control exported macros #####        */
1280 /* ========================================================================== */
1281 
1282 /**
1283   * @brief  Enable the RTC calibration output.
1284   * @param  __HANDLE__ specifies the RTC handle.
1285   * @retval None
1286   */
1287 #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
1288 
1289 /**
1290   * @brief  Disable the calibration output.
1291   * @param  __HANDLE__ specifies the RTC handle.
1292   * @retval None
1293   */
1294 #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
1295 
1296 /**
1297   * @brief  Enable the clock reference detection.
1298   * @param  __HANDLE__ specifies the RTC handle.
1299   * @retval None
1300   */
1301 #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
1302 
1303 /**
1304   * @brief  Disable the clock reference detection.
1305   * @param  __HANDLE__ specifies the RTC handle.
1306   * @retval None
1307   */
1308 #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
1309 
1310 /**
1311   * @brief  Get the selected RTC shift operation's flag status.
1312   * @param  __HANDLE__ specifies the RTC handle.
1313   * @param  __FLAG__ specifies the RTC shift operation Flag is pending or not.
1314   *          This parameter can be:
1315   *             @arg RTC_FLAG_SHPF
1316   * @retval Flag status
1317   */
1318 #if defined(TAMP)
1319 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)         (((((__HANDLE__)->Instance->ICSR) & (__FLAG__)) != 0U) ? 1U : 0U)
1320 #else
1321 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)         (((((__HANDLE__)->Instance->ISR)  & (__FLAG__)) != 0U) ? 1U : 0U)
1322 #endif /* TAMP */
1323 
1324 /* ========================================================================== */
1325 /*               ##### RTC Wake-up Interrupt exported macros #####            */
1326 /* ========================================================================== */
1327 
1328 /**
1329   * @brief  Enable interrupt on the RTC WakeUp Timer associated Exti line.
1330   * @retval None
1331   */
1332 #if defined(EXTI_D1)
1333 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI_D1->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1334 #else  /* EXTI */
1335 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI->IMR1    |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1336 #endif /* EXTI_D1 */
1337 /**
1338   * @brief  Disable interrupt on the RTC WakeUp Timer associated Exti line.
1339   * @retval None
1340   */
1341 #if defined(EXTI_D1)
1342 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI_D1->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1343 #else  /* EXTI */
1344 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI->IMR1    &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1345 #endif /* EXTI_D1 */
1346 
1347 /**
1348   * @brief  Enable event on the RTC WakeUp Timer associated Exti line.
1349   * @retval None
1350   */
1351 #if defined(EXTI_D1)
1352 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI_D1->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1353 #else  /* EXTI */
1354 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI->EMR1    |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1355 #endif /* EXTI_D1 */
1356 
1357 /**
1358   * @brief  Disable event on the RTC WakeUp Timer associated Exti line.
1359   * @retval None
1360   */
1361 #if defined(EXTI_D1)
1362 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI_D1->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1363 #else  /* EXTI */
1364 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI->EMR1    &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1365 #endif /* EXTI_D1 */
1366 
1367 /**
1368   * @brief  Enable event on the RTC WakeUp Timer associated D3 Exti line.
1369   * @retval None
1370   */
1371 #define __HAL_RTC_WAKEUPTIMER_EXTID3_ENABLE_EVENT()    (EXTI->D3PMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1372 
1373 /**
1374   * @brief  Disable event on the RTC WakeUp Timer associated D3 Exti line.
1375   * @retval None
1376   */
1377 #define __HAL_RTC_WAKEUPTIMER_EXTID3_DISABLE_EVENT()   (EXTI->D3PMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1378 
1379 #if defined(DUAL_CORE)
1380 /**
1381   * @brief  Enable interrupt on the RTC WakeUp Timer associated D2 Exti line.
1382   * @retval None
1383   */
1384 #define __HAL_RTC_WAKEUPTIMER_EXTID2_ENABLE_IT()       (EXTI_D2->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1385 
1386 /**
1387   * @brief  Disable interrupt on the RTC WakeUp Timer associated D2 Exti line.
1388   * @retval None
1389   */
1390 #define __HAL_RTC_WAKEUPTIMER_EXTID2_DISABLE_IT()      (EXTI_D2->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1391 
1392 /**
1393   * @brief  Enable event on the RTC WakeUp Timer associated D2 Exti line.
1394   * @retval None
1395   */
1396 #define __HAL_RTC_WAKEUPTIMER_EXTID2_ENABLE_EVENT()    (EXTI_D2->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1397 
1398 /**
1399   * @brief  Disable event on the RTC WakeUp Timer associated D2 Exti line.
1400   * @retval None
1401   */
1402 #define __HAL_RTC_WAKEUPTIMER_EXTID2_DISABLE_EVENT()   (EXTI_D2->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1403 
1404 #endif /* DUAL_CORE */
1405 
1406 /**
1407   * @brief  Enable falling edge trigger on the RTC WakeUp Timer associated Exti line.
1408   * @retval None
1409   */
1410 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1411 
1412 /**
1413   * @brief  Disable falling edge trigger on the RTC WakeUp Timer associated Exti line.
1414   * @retval None
1415   */
1416 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1417 
1418 /**
1419   * @brief  Enable rising edge trigger on the RTC WakeUp Timer associated Exti line.
1420   * @retval None
1421   */
1422 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1423 
1424 /**
1425   * @brief  Disable rising edge trigger on the RTC WakeUp Timer associated Exti line.
1426   * @retval None
1427   */
1428 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
1429 
1430 /**
1431   * @brief  Enable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
1432   * @retval None
1433   */
1434 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE()  do { \
1435                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();  \
1436                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE(); \
1437                                                                  } while(0)
1438 
1439 /**
1440   * @brief  Disable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
1441   * This parameter can be:
1442   * @retval None
1443   */
1444 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE()  do { \
1445                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();  \
1446                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE(); \
1447                                                                   } while(0)
1448 
1449 /**
1450   * @brief Check whether the RTC WakeUp Timer associated Exti line interrupt flag is set or not.
1451   * @retval Line Status.
1452   */
1453 #if defined(EXTI_D1)
1454 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI_D1->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1455 #else  /* EXTI */
1456 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI->PR1    & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1457 #endif /* EXTI_D1 */
1458 
1459 /**
1460   * @brief Clear the RTC WakeUp Timer associated Exti line flag.
1461   * @retval None
1462   */
1463 #if defined(EXTI_D1)
1464 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI_D1->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1465 #else  /* EXTI */
1466 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI->PR1    = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1467 #endif /* EXTI_D1 */
1468 
1469 /**
1470   * @brief Check whether the RTC WakeUp Timer associated D3 Exti line interrupt flag is set or not.
1471   * @retval Line Status
1472   */
1473 #define __HAL_RTC_WAKEUPTIMER_EXTID3_GET_FLAG()            (EXTI_D3->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1474 
1475 /**
1476   * @brief Clear the RTC WakeUp Timer associated D3 Exti line flag.
1477   * @retval None.
1478   */
1479 #define __HAL_RTC_WAKEUPTIMER_EXTID3_CLEAR_FLAG()          (EXTI_D3->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1480 
1481 /**
1482   * @brief Generate a Software interrupt on the RTC WakeUp Timer associated Exti line.
1483   * @retval None.
1484   */
1485 #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT()         (EXTI->SWIER1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1486 
1487 #if defined(DUAL_CORE)
1488 
1489 /**
1490   * @brief Check whether the RTC WakeUp Timer associated D2 Exti line interrupt flag is set or not.
1491   * @retval Line Status.
1492   */
1493 #define __HAL_RTC_WAKEUPTIMER_EXTID2_GET_FLAG()            (EXTI_D2->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1494 
1495 /**
1496   * @brief Clear the RTC WakeUp Timer associated D2 Exti line flag.
1497   * @retval None.
1498   */
1499 #define __HAL_RTC_WAKEUPTIMER_EXTID2_CLEAR_FLAG()          (EXTI_D2->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1500 
1501 #endif /* DUAL_CORE */
1502 
1503 /* ========================================================================== */
1504 /*       ##### RTC TimeStamp and Tamper Interrupt exported macros #####       */
1505 /* ========================================================================== */
1506 
1507 /**
1508   * @brief  Enable interrupt on the RTC Tamper and Timestamp associated Exti line.
1509   * @retval None
1510   */
1511 #if defined(EXTI_D1)
1512 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI_D1->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1513 #else  /* EXTI */
1514 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI->IMR1    |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1515 #endif /* EXTI_D1 */
1516 
1517 /**
1518   * @brief  Disable interrupt on the RTC Tamper and Timestamp associated Exti line.
1519   * @retval None
1520   */
1521 #if defined(EXTI_D1)
1522 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI_D1->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1523 #else  /* EXTI */
1524 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI->IMR1    &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1525 #endif /* EXTI_D1 */
1526 
1527 /**
1528   * @brief  Enable event on the RTC Tamper and Timestamp associated Exti line.
1529   * @retval None
1530   */
1531 #if defined(EXTI_D1)
1532 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI_D1->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1533 #else  /* EXTI */
1534 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI->EMR1    |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1535 #endif /* EXTI_D1 */
1536 
1537 /**
1538   * @brief  Disable event on the RTC Tamper and Timestamp associated Exti line.
1539   * @retval None
1540   */
1541 #if defined(EXTI_D1)
1542 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI_D1->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1543 #else  /* EXTI */
1544 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI->EMR1    &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1545 #endif /* EXTI_D1 */
1546 
1547 #if defined(DUAL_CORE)
1548 /**
1549   * @brief  Enable interrupt on the RTC Tamper and Timestamp associated D2 Exti line.
1550   * @retval None
1551   */
1552 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_ENABLE_IT()      (EXTI_D2->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1553 
1554 /**
1555   * @brief  Disable interrupt on the RTC Tamper and Timestamp associated D2 Exti line.
1556   * @retval None
1557   */
1558 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_DISABLE_IT()     (EXTI_D2->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1559 
1560 
1561 /**
1562   * @brief  Enable event on the RTC Tamper and Timestamp associated D2 Exti line.
1563   * @retval None
1564   */
1565 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_ENABLE_EVENT()  (EXTI_D2->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1566 
1567 
1568 /**
1569   * @brief  Disable event on the RTC Tamper and Timestamp associated D2 Exti line.
1570   * @retval None
1571   */
1572 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_DISABLE_EVENT() (EXTI_D2->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1573 
1574 #endif /* DUAL_CORE */
1575 
1576 /**
1577   * @brief  Enable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
1578   * @retval None
1579   */
1580 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1581 
1582 /**
1583   * @brief  Disable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
1584   * @retval None
1585   */
1586 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1587 
1588 /**
1589   * @brief  Enable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
1590   * @retval None
1591   */
1592 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1593 
1594 /**
1595   * @brief  Disable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
1596   * @retval None
1597   */
1598 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
1599 
1600 /**
1601   * @brief  Enable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
1602   * @retval None
1603   */
1604 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE()  do { \
1605                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();  \
1606                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); \
1607                                                                       } while(0)
1608 
1609 /**
1610   * @brief  Disable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
1611   * @retval None
1612   */
1613 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE()  do { \
1614                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE();  \
1615                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE(); \
1616                                                                        } while(0)
1617 
1618 /**
1619   * @brief Check whether the RTC Tamper and Timestamp associated Exti line interrupt flag is set or not.
1620   * @retval Line Status
1621   */
1622 #if defined(EXTI_D1)
1623 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI_D1->PR1 & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1624 #else  /* EXTI */
1625 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI->PR1    & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1626 #endif /* EXTI_D1 */
1627 
1628 /**
1629   * @brief Clear the RTC Tamper and Timestamp associated Exti line flag.
1630   * @retval None
1631   */
1632 #if defined(EXTI_D1)
1633 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI_D1->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1634 #else  /* EXTI */
1635 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI->PR1    = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1636 #endif /* EXTI_D1 */
1637 
1638 #if defined(DUAL_CORE)
1639 /**
1640   * @brief Check whether the RTC Tamper and Timestamp associated D2 Exti line interrupt flag is set or not.
1641   * @retval Line Status
1642   */
1643 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_GET_FLAG()       (EXTI_D2->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
1644 
1645 /**
1646   * @brief Clear the RTC Tamper and Timestamp associated D2 Exti line flag.
1647   * @retval None
1648   */
1649 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_CLEAR_FLAG()     (EXTI_D2->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1650 
1651 #endif  /* DUAL_CORE */
1652 
1653 /**
1654   * @brief Generate a Software interrupt on the RTC Tamper and Timestamp associated Exti line
1655   * @retval None
1656   */
1657 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()    (EXTI->SWIER1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
1658 
1659 /**
1660   * @}
1661   */
1662 
1663 /* Exported functions --------------------------------------------------------*/
1664 
1665 /** @defgroup RTCEx_Exported_Functions RTC Exported Functions
1666   * @ingroup RTEMSBSPsARMSTM32H7
1667   * @{
1668   */
1669 
1670 /* ========================================================================== */
1671 /*                  ##### RTC TimeStamp exported functions #####              */
1672 /* ========================================================================== */
1673 
1674 /* RTC TimeStamp functions ****************************************************/
1675 
1676 /** @defgroup RTCEx_Exported_Functions_Group1 Extended RTC TimeStamp functions
1677   * @ingroup RTEMSBSPsARMSTM32H7
1678   * @{
1679   */
1680 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
1681 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
1682 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
1683 HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc);
1684 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTimeStamp(RTC_HandleTypeDef *hrtc);
1685 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
1686 void              HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc);
1687 void              HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc);
1688 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1689 /**
1690   * @}
1691   */
1692 
1693 /* ========================================================================== */
1694 /*                    ##### RTC Tamper exported functions #####               */
1695 /* ========================================================================== */
1696 
1697 /* RTC Tamper functions *******************************************************/
1698 
1699 /** @defgroup RTCEx_Exported_Functions_Group5 Extended RTC Tamper functions
1700   * @ingroup RTEMSBSPsARMSTM32H7
1701   * @{
1702   */
1703 HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
1704 HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
1705 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
1706 HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1707 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1708 HAL_StatusTypeDef HAL_RTCEx_PollForTamper3Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1709 void              HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc);
1710 void              HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc);
1711 void              HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc);
1712 #if defined(TAMP)
1713 HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper);
1714 HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper_IT(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper);
1715 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTamper(RTC_HandleTypeDef *hrtc, uint32_t IntTamper);
1716 HAL_StatusTypeDef HAL_RTCEx_PollForInternalTamperEvent(RTC_HandleTypeDef *hrtc, uint32_t IntTamper, uint32_t Timeout);
1717 void              HAL_RTCEx_InternalTamper1EventCallback(RTC_HandleTypeDef *hrtc);
1718 void              HAL_RTCEx_InternalTamper2EventCallback(RTC_HandleTypeDef *hrtc);
1719 void              HAL_RTCEx_InternalTamper3EventCallback(RTC_HandleTypeDef *hrtc);
1720 void              HAL_RTCEx_InternalTamper4EventCallback(RTC_HandleTypeDef *hrtc);
1721 void              HAL_RTCEx_InternalTamper5EventCallback(RTC_HandleTypeDef *hrtc);
1722 void              HAL_RTCEx_InternalTamper6EventCallback(RTC_HandleTypeDef *hrtc);
1723 void              HAL_RTCEx_InternalTamper8EventCallback(RTC_HandleTypeDef *hrtc);
1724 HAL_StatusTypeDef HAL_RTCEx_SetActiveTampers(RTC_HandleTypeDef *hrtc, RTC_ActiveTampersTypeDef *sAllTamper);
1725 HAL_StatusTypeDef HAL_RTCEx_SetActiveSeed(RTC_HandleTypeDef *hrtc, uint32_t *pSeed);
1726 HAL_StatusTypeDef HAL_RTCEx_DeactivateActiveTampers(RTC_HandleTypeDef *hrtc);
1727 #endif /* TAMP */
1728 
1729 /**
1730   * @}
1731   */
1732 
1733 /* ========================================================================== */
1734 /*                   ##### RTC Wake-up exported functions #####               */
1735 /* ========================================================================== */
1736 
1737 /* RTC Wake-up functions ******************************************************/
1738 
1739 /** @defgroup RTCEx_Exported_Functions_Group2 Extended RTC Wake-up functions
1740   * @ingroup RTEMSBSPsARMSTM32H7
1741   * @{
1742   */
1743 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
1744 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
1745 HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
1746 uint32_t          HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc);
1747 void              HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc);
1748 void              HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc);
1749 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1750 /**
1751   * @}
1752   */
1753 
1754 /* ========================================================================== */
1755 /*         ##### Extended RTC Backup registers exported functions #####       */
1756 /* ========================================================================== */
1757 
1758 /* Extended RTC Backup registers functions ************************************/
1759 
1760 /** @defgroup RTCEx_Exported_Functions_Group6 Extended RTC Backup register functions
1761   * @ingroup RTEMSBSPsARMSTM32H7
1762   * @{
1763   */
1764 void     HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
1765 uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
1766 /**
1767   * @}
1768   */
1769 
1770 /* ========================================================================== */
1771 /*        ##### Extended RTC Peripheral Control exported functions #####      */
1772 /* ========================================================================== */
1773 
1774 /* Extended RTC Peripheral Control functions **********************************/
1775 
1776 /** @defgroup RTCEx_Exported_Functions_Group3 Extended Peripheral Control functions
1777   * @ingroup RTEMSBSPsARMSTM32H7
1778   * @{
1779   */
1780 HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue);
1781 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
1782 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
1783 HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc);
1784 HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);
1785 HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);
1786 HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);
1787 HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);
1788 #if defined(TAMP)
1789 HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterIncrement(RTC_HandleTypeDef *hrtc,  uint32_t Instance);
1790 HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterGet(RTC_HandleTypeDef *hrtc, uint32_t *Counter,  uint32_t Instance);
1791 #endif /* TAMP */
1792 /**
1793   * @}
1794   */
1795 
1796 /* Extended RTC features functions *******************************************/
1797 
1798 /** @defgroup RTCEx_Exported_Functions_Group4 Extended features functions
1799   * @ingroup RTEMSBSPsARMSTM32H7
1800   * @{
1801   */
1802 
1803 void              HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc);
1804 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
1805 /**
1806   * @}
1807   */
1808 
1809 /**
1810   * @}
1811   */
1812 
1813 /* Private types -------------------------------------------------------------*/
1814 /* Private variables ---------------------------------------------------------*/
1815 /* Private constants ---------------------------------------------------------*/
1816 /** @defgroup RTCEx_Private_Constants RTC Private Constants
1817   * @ingroup RTEMSBSPsARMSTM32H7
1818   * @{
1819   */
1820 #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT  EXTI_IMR1_IM18  /*!< External interrupt line 18 Connected to the RTC Tamper and Time Stamp events */
1821 #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT       EXTI_IMR1_IM19  /*!< External interrupt line 19 Connected to the RTC Wakeup event */
1822 
1823 /* Masks Definition */
1824 #define RTC_TAMPER_X             ((uint32_t) (RTC_TAMPER_1 | RTC_TAMPER_2 | RTC_TAMPER_3))
1825 #define RTC_TAMPER_X_INTERRUPT   ((uint32_t) (RTC_IT_TAMP1 | RTC_IT_TAMP2 | RTC_IT_TAMP3))
1826 
1827 /**
1828   * @}
1829   */
1830 
1831 /* Private macros ------------------------------------------------------------*/
1832 /** @defgroup RTCEx_Private_Macros RTC Private Macros
1833   * @ingroup RTEMSBSPsARMSTM32H7
1834   * @{
1835   */
1836 
1837 /** @defgroup RTCEx_IS_RTC_Definitions Private macros to check input parameters
1838   * @ingroup RTEMSBSPsARMSTM32H7
1839   * @{
1840   */
1841 
1842 /* ========================================================================== */
1843 /*          ##### Extended RTC Backup registers private macros #####          */
1844 /* ========================================================================== */
1845 
1846 #define IS_RTC_BKP(__BKP__)                   ((__BKP__) < BKP_REG_NUMBER)
1847 
1848 /* ========================================================================== */
1849 /*                  ##### RTC TimeStamp private macros #####                  */
1850 /* ========================================================================== */
1851 
1852 #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
1853                                  ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
1854 
1855 #define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT))
1856 
1857 /* ========================================================================== */
1858 /*                    ##### RTC Wake-up private macros #####                  */
1859 /* ========================================================================== */
1860 
1861 #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16)       || \
1862                                     ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8)    || \
1863                                     ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4)    || \
1864                                     ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2)    || \
1865                                     ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
1866                                     ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
1867 
1868 #define IS_RTC_WAKEUP_COUNTER(COUNTER)  ((COUNTER) <= RTC_WUTR_WUT)
1869 
1870 /* ========================================================================== */
1871 /*               ##### RTC Smooth Calibration private macros #####            */
1872 /* ========================================================================== */
1873 
1874 #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
1875                                             ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
1876                                             ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
1877 
1878 #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
1879                                         ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
1880 
1881 #define  IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= RTC_CALR_CALM)
1882 
1883 /* ========================================================================== */
1884 /*          ##### Extended RTC Peripheral Control private macros #####        */
1885 /* ========================================================================== */
1886 
1887 #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
1888                                  ((SEL) == RTC_SHIFTADD1S_SET))
1889 
1890 #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= RTC_SHIFTR_SUBFS)
1891 
1892 #define IS_RTC_CALIB_OUTPUT(OUTPUT)  (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
1893                                       ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
1894 
1895 /* ========================================================================== */
1896 /*                    ##### RTC Tamper private macros #####                   */
1897 /* ========================================================================== */
1898 
1899 #define IS_RTC_TAMPER(__TAMPER__)  ((((__TAMPER__) &  RTC_TAMPER_X) != 0x00U) &&  \
1900                                     (((__TAMPER__) & ~RTC_TAMPER_X) == 0x00U))
1901 
1902 #define IS_RTC_TAMPER_INTERRUPT(__INTERRUPT__)                                                           \
1903               ((((__INTERRUPT__) & (  RTC_TAMPER_X_INTERRUPT | RTC_IT_TAMPALL )) != 0x00U) &&  \
1904                (((__INTERRUPT__) & (~(RTC_TAMPER_X_INTERRUPT | RTC_IT_TAMPALL))) == 0x00U))
1905 
1906 #define IS_RTC_TAMPER_TRIGGER(__TRIGGER__) (((__TRIGGER__) == RTC_TAMPERTRIGGER_RISINGEDGE)    || \
1907                                             ((__TRIGGER__) == RTC_TAMPERTRIGGER_FALLINGEDGE)   || \
1908                                             ((__TRIGGER__) == RTC_TAMPERTRIGGER_LOWLEVEL)      || \
1909                                             ((__TRIGGER__) == RTC_TAMPERTRIGGER_HIGHLEVEL))
1910 
1911 #define IS_RTC_TAMPER_ERASE_MODE(__MODE__)             (((__MODE__) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \
1912                                                         ((__MODE__) == RTC_TAMPER_ERASE_BACKUP_DISABLE))
1913 
1914 #define IS_RTC_TAMPER_MASKFLAG_STATE(__STATE__)        (((__STATE__) == RTC_TAMPERMASK_FLAG_ENABLE) || \
1915                                                         ((__STATE__) == RTC_TAMPERMASK_FLAG_DISABLE))
1916 
1917 #define IS_RTC_TAMPER_FILTER(__FILTER__)  (((__FILTER__) == RTC_TAMPERFILTER_DISABLE) || \
1918                                            ((__FILTER__) == RTC_TAMPERFILTER_2SAMPLE) || \
1919                                            ((__FILTER__) == RTC_TAMPERFILTER_4SAMPLE) || \
1920                                            ((__FILTER__) == RTC_TAMPERFILTER_8SAMPLE))
1921 
1922 #define IS_RTC_TAMPER_SAMPLING_FREQ(__FREQ__) (((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
1923                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
1924                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
1925                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
1926                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
1927                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
1928                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512)  || \
1929                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
1930 
1931 #define IS_RTC_TAMPER_PRECHARGE_DURATION(__DURATION__) (((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
1932                                                         ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
1933                                                         ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
1934                                                         ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
1935 
1936 #define IS_RTC_TAMPER_PULLUP_STATE(__STATE__) (((__STATE__) == RTC_TAMPER_PULLUP_ENABLE) || \
1937                                                ((__STATE__) == RTC_TAMPER_PULLUP_DISABLE))
1938 
1939 #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(__DETECTION__) (((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
1940                                                                   ((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
1941 
1942 #if defined(TAMP)
1943 #define IS_RTC_TAMPER_TAMPERDETECTIONOUTPUT(__MODE__) (((__MODE__) == RTC_TAMPERDETECTIONOUTPUT_ENABLE) || \
1944                                                        ((__MODE__) == RTC_TAMPERDETECTIONOUTPUT_DISABLE))
1945 #endif /* TAMP */
1946 
1947 #define IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(FILTER, TRIGGER)            \
1948                   (  (  ((FILTER) != RTC_TAMPERFILTER_DISABLE)          \
1949                      && (  ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL)    \
1950                         || ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))) \
1951                   || (  ((FILTER) == RTC_TAMPERFILTER_DISABLE)          \
1952                      && (  ((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE)  \
1953                         || ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE))))
1954 
1955 #define IS_RTC_INTERNAL_TAMPER(__INT_TAMPER__)   ((((__INT_TAMPER__) &  RTC_INT_TAMPER_ALL) != 0x00U) && \
1956                                                   (((__INT_TAMPER__) & ~RTC_INT_TAMPER_ALL) == 0x00U))
1957 
1958 /**
1959   * @}
1960   */
1961 
1962 /**
1963   * @}
1964   */
1965 
1966 /**
1967   * @}
1968   */
1969 
1970 /**
1971   * @}
1972   */
1973 
1974 #ifdef __cplusplus
1975 }
1976 #endif /* __cplusplus */
1977 
1978 #endif /* STM32H7xx_HAL_RTC_EX_H */
1979