STM32H735xx HAL User Manual
stm32h7xx_hal_rtc_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_hal_rtc_ex.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of RTC HAL Extension module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32H7xx_HAL_RTC_EX_H
00021 #define STM32H7xx_HAL_RTC_EX_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif /* __cplusplus */
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32h7xx_hal_def.h"
00029 
00030 /** @addtogroup STM32H7xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 /** @defgroup RTCEx RTCEx
00035   * @{
00036   */
00037 
00038 /* Exported types ------------------------------------------------------------*/
00039 
00040 /** @defgroup RTCEx_Exported_Types RTCEx Exported Types
00041   * @{
00042   */
00043 
00044 /** @defgroup RTCEx_Tamper_structure_definition RTC Tamper structure definition
00045   * @{
00046   */
00047 typedef struct
00048 {
00049   uint32_t Tamper;                      /*!< Specifies the Tamper Pin.
00050                                              This parameter can be a value of @ref RTCEx_Tamper_Pins_Definitions */
00051 
00052   uint32_t Interrupt;                   /*!< Specifies the Tamper Interrupt.
00053                                              This parameter can be a value of @ref  RTCEx_Tamper_Interrupt_Definitions */
00054 
00055   uint32_t Trigger;                     /*!< Specifies the Tamper Trigger.
00056                                              This parameter can be a value of @ref RTCEx_Tamper_Trigger_Definitions */
00057 
00058   uint32_t NoErase;                     /*!< Specifies the Tamper no erase mode.
00059                                              This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp_Definitions */
00060 
00061   uint32_t MaskFlag;                     /*!< Specifies the Tamper Flag masking.
00062                                              This parameter can be a value of @ref RTCEx_Tamper_MaskFlag_Definitions   */
00063 
00064   uint32_t Filter;                      /*!< Specifies the TAMP Filter Tamper.
00065                                              This parameter can be a value of @ref RTCEx_Tamper_Filter_Definitions */
00066 
00067   uint32_t SamplingFrequency;           /*!< Specifies the sampling frequency.
00068                                              This parameter can be a value of @ref RTCEx_Tamper_Sampling_Frequencies_Definitions */
00069 
00070   uint32_t PrechargeDuration;           /*!< Specifies the Precharge Duration .
00071                                              This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration_Definitions */
00072 
00073   uint32_t TamperPullUp;                /*!< Specifies the Tamper PullUp .
00074                                              This parameter can be a value of @ref RTCEx_Tamper_Pull_UP_Definitions */
00075 
00076   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the TimeStampOnTamperDetection.
00077                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */
00078 } RTC_TamperTypeDef;
00079 /**
00080   * @}
00081   */
00082 
00083 #if defined(TAMP_CR1_ITAMP1E)
00084 /** @defgroup RTCEx_Internal_Tamper_structure_definition RTCEx Internal Tamper structure definition
00085   * @{
00086   */
00087 typedef struct
00088 {
00089   uint32_t IntTamper;                   /*!< Specifies the Internal Tamper Pin.
00090                                              This parameter can be a value of @ref RTCEx_Internal_Tamper_Pins */
00091 
00092   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the TimeStampOnTamperDetection.
00093                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection */
00094 } RTC_InternalTamperTypeDef;
00095 /**
00096   * @}
00097   */
00098 #endif /* TAMP_CR1_ITAMP1E */
00099 
00100 #if defined(TAMP_ATCR1_TAMP1AM)
00101 /** @defgroup RTCEx_Active_Seed_Size Seed size Definitions
00102   * @{
00103   */
00104 #define RTC_ATAMP_SEED_NB_UINT32        4U
00105 /**
00106   * @}
00107   */
00108 
00109 /** @defgroup RTCEx_Active_Tampers_Number Active Tampers number Definitions
00110   * @{
00111   */
00112 #define RTC_TAMP_NB                     3u
00113 /**
00114   * @}
00115   */
00116 
00117 /** @defgroup RTCEx_ActiveTamper_structures_definition RTC Active Tamper structures definitions
00118   * @{
00119   */
00120 typedef struct
00121 {
00122   uint32_t Enable;                      /*!< Specifies the Tamper input is active.
00123                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Enable */
00124 
00125   uint32_t Interrupt;                    /*!< Specifies the interrupt mode
00126                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Interrupt */
00127 
00128   uint32_t Output;                      /*!< Specifies the TAMP output to be compared with.
00129                                              The same output can be used for several tamper inputs.
00130                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Sel */
00131 
00132   uint32_t NoErase;                     /*!< Specifies the Tamper no erase mode.
00133                                              This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp */
00134 
00135   uint32_t MaskFlag;                    /*!< Specifies the Tamper Flag masking.
00136                                              This parameter can be a value of @ref RTCEx_Tamper_MaskFlag */
00137 
00138 } RTC_ATampInputTypeDef;
00139 
00140 
00141 typedef struct
00142 {
00143   uint32_t ActiveFilter;                /*!< Specifies the Active tamper filter enable.
00144                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Filter */
00145 
00146   uint32_t ActiveAsyncPrescaler;        /*!< Specifies the Active Tamper asynchronous Prescaler clock.
00147                                              This parameter can be a value of @ref RTCEx_ActiveTamper_Async_prescaler */
00148 
00149   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the timeStamp on tamper detection.
00150                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection */
00151 
00152   uint32_t ActiveOutputChangePeriod;    /*!< Specifies the Active Tamper output change period .
00153                                              This parameter can be a value from 0 to 7. */
00154 
00155   uint32_t Seed[RTC_ATAMP_SEED_NB_UINT32];
00156   /*!< Specifies the Active Tamper RNG Seed value .
00157        This parameter can be a value from 0 to (2^32-1) */
00158 
00159   RTC_ATampInputTypeDef TampInput[RTC_TAMP_NB];
00160   /*!< Specifies configuration of all active tampers.
00161        The index of TampInput[RTC_TAMP_NB] can be a value of RTCEx_ActiveTamper_Sel */
00162 } RTC_ActiveTampersTypeDef;
00163 
00164 /**
00165   * @}
00166   */
00167 #endif /* TAMP_ATCR1_TAMP1AM */
00168 
00169 /**
00170   * @}
00171   */
00172 
00173 /* Exported constants --------------------------------------------------------*/
00174 
00175 /** @defgroup RTCEx_Exported_Constants RTC Exported Constants
00176   * @{
00177   */
00178 
00179 /* ========================================================================== */
00180 /*         ##### Extended RTC Backup registers exported constants #####       */
00181 /* ========================================================================== */
00182 
00183 /** @defgroup RTCEx_Backup_Registers_Number_Definitions RTC Backup Registers Number Definitions
00184   * @{
00185   */
00186 #if defined(RTC_BKP_NUMBER)
00187 #define BKP_REG_NUMBER                       RTC_BKP_NUMBER
00188 #endif /* RTC_BKP_NUMBER */
00189 #if defined(TAMP_BKP_NUMBER)
00190 #define BKP_REG_NUMBER                       TAMP_BKP_NUMBER
00191 #endif /* TAMP_BKP_NUMBER */
00192 /**
00193   * @}
00194   */
00195 
00196 /** @defgroup RTCEx_Backup_Registers_Definitions RTC Backup Registers Definitions
00197   * @{
00198   */
00199 #define RTC_BKP_DR0                       0x00u
00200 #define RTC_BKP_DR1                       0x01u
00201 #define RTC_BKP_DR2                       0x02u
00202 #define RTC_BKP_DR3                       0x03u
00203 #define RTC_BKP_DR4                       0x04u
00204 #define RTC_BKP_DR5                       0x05u
00205 #define RTC_BKP_DR6                       0x06u
00206 #define RTC_BKP_DR7                       0x07u
00207 #define RTC_BKP_DR8                       0x08u
00208 #define RTC_BKP_DR9                       0x09u
00209 #define RTC_BKP_DR10                      0x0Au
00210 #define RTC_BKP_DR11                      0x0Bu
00211 #define RTC_BKP_DR12                      0x0Cu
00212 #define RTC_BKP_DR13                      0x0Du
00213 #define RTC_BKP_DR14                      0x0Eu
00214 #define RTC_BKP_DR15                      0x0Fu
00215 #define RTC_BKP_DR16                      0x10u
00216 #define RTC_BKP_DR17                      0x11u
00217 #define RTC_BKP_DR18                      0x12u
00218 #define RTC_BKP_DR19                      0x13u
00219 #define RTC_BKP_DR20                      0x14u
00220 #define RTC_BKP_DR21                      0x15u
00221 #define RTC_BKP_DR22                      0x16u
00222 #define RTC_BKP_DR23                      0x17u
00223 #define RTC_BKP_DR24                      0x18u
00224 #define RTC_BKP_DR25                      0x19u
00225 #define RTC_BKP_DR26                      0x1Au
00226 #define RTC_BKP_DR27                      0x1Bu
00227 #define RTC_BKP_DR28                      0x1Cu
00228 #define RTC_BKP_DR29                      0x1Du
00229 #define RTC_BKP_DR30                      0x1Eu
00230 #define RTC_BKP_DR31                      0x1Fu
00231 /**
00232   * @}
00233   */
00234 
00235 /* ========================================================================== */
00236 /*                 ##### RTC TimeStamp exported constants #####               */
00237 /* ========================================================================== */
00238 
00239 /** @defgroup RTCEx_TimeStamp_Edges_definitions RTC TimeStamp Edges Definitions
00240   *
00241   * @{
00242   */
00243 #define RTC_TIMESTAMPEDGE_RISING            0x00000000u
00244 #define RTC_TIMESTAMPEDGE_FALLING           RTC_CR_TSEDGE
00245 /**
00246   * @}
00247   */
00248 
00249 /** @defgroup RTCEx_TimeStamp_Pin_Selection RTC TimeStamp Pin Selection
00250   * @{
00251   */
00252 #define RTC_TIMESTAMPPIN_DEFAULT              0x00000000u
00253 /**
00254   * @}
00255   */
00256 
00257 
00258 /* ========================================================================== */
00259 /*                    ##### RTC Tamper exported constants #####               */
00260 /* ========================================================================== */
00261 
00262 /** @defgroup RTCEx_Tamper_Pins_Definitions RTC Tamper Pins Definitions
00263   * @{
00264   */
00265 #if defined(TAMP_CR1_TAMP1E)
00266 #define RTC_TAMPER_1                        TAMP_CR1_TAMP1E
00267 #endif /* TAMP_CR1_TAMP1E */
00268 #if defined(TAMP_CR1_TAMP2E)
00269 #define RTC_TAMPER_2                        TAMP_CR1_TAMP2E
00270 #endif /* TAMP_CR1_TAMP2E */
00271 #if defined(TAMP_CR1_TAMP3E)
00272 #define RTC_TAMPER_3                        TAMP_CR1_TAMP3E
00273 #endif /* TAMP_CR1_TAMP3E */
00274 
00275 #if defined(RTC_TAMPCR_TAMP1E)
00276 #define RTC_TAMPER_1                       RTC_TAMPCR_TAMP1E
00277 #endif /* RTC_TAMPCR_TAMP1E */
00278 #if defined(RTC_TAMPCR_TAMP2E)
00279 #define RTC_TAMPER_2                       RTC_TAMPCR_TAMP2E
00280 #endif /* RTC_TAMPCR_TAMP2E */
00281 #if defined(RTC_TAMPCR_TAMP3E)
00282 #define RTC_TAMPER_3                       RTC_TAMPCR_TAMP3E
00283 #endif /* RTC_TAMPCR_TAMP3E */
00284 
00285 #define RTC_TAMPER_ALL                     (RTC_TAMPER_1 | RTC_TAMPER_2 | RTC_TAMPER_3)
00286 /**
00287   * @}
00288   */
00289 
00290 /** @defgroup RTCEx_Tamper_Interrupt_Definitions RTC Tamper Interrupts Definitions
00291   * @{
00292   */
00293 #if defined(TAMP_IER_TAMP1IE)
00294 #define RTC_IT_TAMP1                      TAMP_IER_TAMP1IE    /*!< Enable Tamper 1 Interrupt                */
00295 #endif /* TAMP_IER_TAMP1IE */
00296 #if defined(TAMP_IER_TAMP2IE)
00297 #define RTC_IT_TAMP2                      TAMP_IER_TAMP2IE    /*!< Enable Tamper 2 Interrupt                */
00298 #endif /* TAMP_IER_TAMP2IE */
00299 #if defined(TAMP_IER_TAMP3IE)
00300 #define RTC_IT_TAMP3                      TAMP_IER_TAMP3IE    /*!< Enable Tamper 3 Interrupt                */
00301 #endif /* TAMP_IER_TAMP3IE */
00302 
00303 #if defined(RTC_TAMPCR_TAMP1IE)
00304 #define RTC_IT_TAMP1                      RTC_TAMPCR_TAMP1IE  /*!< Enable Tamper 1 Interrupt                */
00305 #endif /* RTC_TAMPCR_TAMP1IE */
00306 #if defined(RTC_TAMPCR_TAMP2IE)
00307 #define RTC_IT_TAMP2                      RTC_TAMPCR_TAMP2IE  /*!< Enable Tamper 2 Interrupt                */
00308 #endif /* RTC_TAMPCR_TAMP2IE */
00309 #if defined(RTC_TAMPCR_TAMP3IE)
00310 #define RTC_IT_TAMP3                      RTC_TAMPCR_TAMP3IE  /*!< Enable Tamper 3 Interrupt                */
00311 #endif /* RTC_TAMPCR_TAMP3IE */
00312 
00313 #if defined(RTC_TAMPCR_TAMPIE)
00314 #define RTC_IT_TAMP                       RTC_TAMPCR_TAMPIE   /*!< Enable all Tamper Interrupts              */
00315 #define RTC_IT_TAMPALL                    RTC_IT_TAMP
00316 #else /* RTC_TAMPCR_TAMPIE not defined */
00317 #define RTC_IT_TAMP                       0x00000000u         /*!< No such feature in RTC3                   */
00318 #define RTC_IT_TAMPALL                    (RTC_IT_TAMP1 | RTC_IT_TAMP2 | RTC_IT_TAMP3)
00319 #endif /* RTC_TAMPCR_TAMPIE */
00320 /**
00321   * @}
00322   */
00323 
00324 /** @defgroup RTCEx_Internal_Tamper_Pins_Definitions  RTCEx Internal Tamper Pins Definition
00325   * @{
00326   */
00327 #if defined(TAMP_CR1_ITAMP1E)
00328 #define RTC_INT_TAMPER_1                    TAMP_CR1_ITAMP1E
00329 #endif /* TAMP_CR1_ITAMP1E */
00330 #if defined(TAMP_CR1_ITAMP2E)
00331 #define RTC_INT_TAMPER_2                    TAMP_CR1_ITAMP2E
00332 #endif /* TAMP_CR1_ITAMP2E */
00333 #if defined(TAMP_CR1_ITAMP3E)
00334 #define RTC_INT_TAMPER_3                    TAMP_CR1_ITAMP3E
00335 #endif /* TAMP_CR1_ITAMP3E */
00336 #if defined(TAMP_CR1_ITAMP4E)
00337 #define RTC_INT_TAMPER_4                    TAMP_CR1_ITAMP4E
00338 #endif /* TAMP_CR1_ITAMP4E */
00339 #if defined(TAMP_CR1_ITAMP5E)
00340 #define RTC_INT_TAMPER_5                    TAMP_CR1_ITAMP5E
00341 #endif /* TAMP_CR1_ITAMP5E */
00342 #if defined(TAMP_CR1_ITAMP6E)
00343 #define RTC_INT_TAMPER_6                    TAMP_CR1_ITAMP6E
00344 #endif /* TAMP_CR1_ITAMP6E */
00345 #if defined(TAMP_CR1_ITAMP8E)
00346 #define RTC_INT_TAMPER_8                    TAMP_CR1_ITAMP8E
00347 #define RTC_INT_TAMPER_ALL                  (RTC_INT_TAMPER_1 | RTC_INT_TAMPER_2 |\
00348                                              RTC_INT_TAMPER_3 | RTC_INT_TAMPER_4 |\
00349                                              RTC_INT_TAMPER_5 | RTC_INT_TAMPER_6 |\
00350                                              RTC_INT_TAMPER_8)
00351 #endif /* TAMP_CR1_ITAMP8E */
00352 /**
00353   * @}
00354   */
00355 
00356 /** @defgroup RTCEx_Internal_Tamper_Interrupt_Definitions  RTC Internal Tamper Interrupt
00357   * @{
00358   */
00359 #if defined(TAMP_IER_ITAMP1IE)
00360 #define RTC_INTERNAL_TAMPER1_INTERRUPT     TAMP_IER_ITAMP1IE  /*!< Enable Internal Tamper 1 Interrupt   */
00361 #endif /* TAMP_IER_ITAMP1IE */
00362 #if defined(TAMP_IER_ITAMP2IE)
00363 #define RTC_INTERNAL_TAMPER2_INTERRUPT     TAMP_IER_ITAMP2IE  /*!< Enable Internal Tamper 2 Interrupt   */
00364 #endif /* TAMP_IER_ITAMP2IE */
00365 #if defined(TAMP_IER_ITAMP3IE)
00366 #define RTC_INTERNAL_TAMPER3_INTERRUPT     TAMP_IER_ITAMP3IE  /*!< Enable Internal Tamper 3 Interrupt   */
00367 #endif /* TAMP_IER_ITAMP3IE */
00368 #if defined(TAMP_IER_ITAMP4IE)
00369 #define RTC_INTERNAL_TAMPER4_INTERRUPT     TAMP_IER_ITAMP4IE  /*!< Enable Internal Tamper 4 Interrupt   */
00370 #endif /* TAMP_IER_ITAMP4IE */
00371 #if defined(TAMP_IER_ITAMP5IE)
00372 #define RTC_INTERNAL_TAMPER5_INTERRUPT     TAMP_IER_ITAMP5IE  /*!< Enable Internal Tamper 5 Interrupt   */
00373 #endif /* TAMP_IER_ITAMP5IE */
00374 #if defined(TAMP_IER_ITAMP6IE)
00375 #define RTC_INTERNAL_TAMPER6_INTERRUPT     TAMP_IER_ITAMP6IE  /*!< Enable Internal Tamper 6 Interrupt   */
00376 #endif /* TAMP_IER_ITAMP6IE */
00377 #if defined(TAMP_IER_ITAMP8IE)
00378 #define RTC_INTERNAL_TAMPER8_INTERRUPT     TAMP_IER_ITAMP8IE  /*!< Enable Internal Tamper 8 Interrupt   */
00379 #endif /* TAMP_IER_ITAMP8IE */
00380 /**
00381   * @}
00382   */
00383 
00384 /** @defgroup RTCEx_Tamper_Trigger_Definitions RTC Tamper Triggers Definitions
00385   * @{
00386   */
00387 #define RTC_TAMPERTRIGGER_RISINGEDGE        0x01u  /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */
00388 #define RTC_TAMPERTRIGGER_FALLINGEDGE       0x02u  /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */
00389 #define RTC_TAMPERTRIGGER_LOWLEVEL          0x04u  /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */
00390 #define RTC_TAMPERTRIGGER_HIGHLEVEL         0x08u  /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */
00391 
00392 #if defined(TAMP_CR2_TAMP1TRG)
00393 #define RTC_TAMPER_1_TRIGGER                TAMP_CR2_TAMP1TRG
00394 #endif /* TAMP_CR2_TAMP1TRG */
00395 #if defined(TAMP_CR2_TAMP2TRG)
00396 #define RTC_TAMPER_2_TRIGGER                TAMP_CR2_TAMP2TRG
00397 #endif /* TAMP_CR2_TAMP2TRG */
00398 #if defined(TAMP_CR2_TAMP3TRG)
00399 #define RTC_TAMPER_3_TRIGGER                TAMP_CR2_TAMP3TRG
00400 #endif /* TAMP_CR2_TAMP3TRG */
00401 
00402 #if defined(RTC_TAMPCR_TAMP1TRG)
00403 #define RTC_TAMPER_1_TRIGGER                RTC_TAMPCR_TAMP1TRG
00404 #endif /* RTC_TAMPCR_TAMP1TRG */
00405 #if defined(RTC_TAMPCR_TAMP2TRG)
00406 #define RTC_TAMPER_2_TRIGGER                RTC_TAMPCR_TAMP2TRG
00407 #endif /* RTC_TAMPCR_TAMP2TRG */
00408 #if defined(RTC_TAMPCR_TAMP3TRG)
00409 #define RTC_TAMPER_3_TRIGGER                RTC_TAMPCR_TAMP3TRG
00410 #endif /* RTC_TAMPCR_TAMP3TRG */
00411 
00412 #define RTC_TAMPER_X_TRIGGER                (RTC_TAMPER_1_TRIGGER |\
00413                                              RTC_TAMPER_2_TRIGGER |\
00414                                              RTC_TAMPER_3_TRIGGER)
00415 /**
00416   * @}
00417   */
00418 
00419 /** @defgroup RTCEx_Tamper_EraseBackUp_Definitions RTC Tamper EraseBackUp Definitions
00420 * @{
00421 */
00422 #if defined(TAMP_CR2_TAMP1NOERASE)
00423 #define RTC_TAMPER_ERASE_BACKUP_ENABLE      0x00u
00424 #define RTC_TAMPER_ERASE_BACKUP_DISABLE     0x01u
00425 #endif /* TAMP_CR2_TAMP1NOERASE */
00426 #if defined(RTC_TAMPCR_TAMP1NOERASE)
00427 #define RTC_TAMPER_ERASE_BACKUP_ENABLE     0x00000000u
00428 #define RTC_TAMPER_ERASE_BACKUP_DISABLE    RTC_TAMPCR_TAMP1NOERASE
00429 #endif /* RTC_TAMPCR_TAMP1NOERASE */
00430 
00431 #if defined(TAMP_CR2_TAMP1NOERASE)
00432 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_1  TAMP_CR2_TAMP1NOERASE
00433 #endif /* TAMP_CR2_TAMP1NOERASE */
00434 #if defined(TAMP_CR2_TAMP2NOERASE)
00435 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_2  TAMP_CR2_TAMP2NOERASE
00436 #endif /* TAMP_CR2_TAMP2NOERASE */
00437 #if defined(TAMP_CR2_TAMP3NOERASE)
00438 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_3  TAMP_CR2_TAMP3NOERASE
00439 #endif /* TAMP_CR2_TAMP3NOERASE */
00440 
00441 #if defined(RTC_TAMPCR_TAMP1NOERASE)
00442 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_1  RTC_TAMPCR_TAMP1NOERASE
00443 #endif /* RTC_TAMPCR_TAMP1NOERASE */
00444 #if defined(RTC_TAMPCR_TAMP2NOERASE)
00445 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_2  RTC_TAMPCR_TAMP2NOERASE
00446 #endif /* RTC_TAMPCR_TAMP2NOERASE */
00447 #if defined(RTC_TAMPCR_TAMP3NOERASE)
00448 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_3  RTC_TAMPCR_TAMP3NOERASE
00449 #endif /* RTC_TAMPCR_TAMP3NOERASE */
00450 
00451 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_MASK (RTC_DISABLE_BKP_ERASE_ON_TAMPER_1 |\
00452                                               RTC_DISABLE_BKP_ERASE_ON_TAMPER_2 |\
00453                                               RTC_DISABLE_BKP_ERASE_ON_TAMPER_3)
00454 /**
00455   * @}
00456   */
00457 
00458 /** @defgroup RTCEx_Tamper_MaskFlag_Definitions RTC Tamper Mask Flag Definitions
00459 * @{
00460 */
00461 #if defined(TAMP_CR2_TAMP1MSK)
00462 #define RTC_TAMPERMASK_FLAG_DISABLE         0x00u
00463 #define RTC_TAMPERMASK_FLAG_ENABLE          0x01u
00464 #endif /* TAMP_CR2_TAMP1MSK */
00465 #if defined(RTC_TAMPCR_TAMP1MF)
00466 #define RTC_TAMPERMASK_FLAG_DISABLE        0x00000000u
00467 #define RTC_TAMPERMASK_FLAG_ENABLE         RTC_TAMPCR_TAMP1MF
00468 #endif /* RTC_TAMPCR_TAMP1MF */
00469 
00470 #if defined(TAMP_CR2_TAMP1MSK)
00471 #define RTC_TAMPER_1_MASK_FLAG             TAMP_CR2_TAMP1MSK
00472 #endif /* TAMP_CR2_TAMP1MSK */
00473 #if defined(TAMP_CR2_TAMP2MSK)
00474 #define RTC_TAMPER_2_MASK_FLAG             TAMP_CR2_TAMP2MSK
00475 #endif /* TAMP_CR2_TAMP2MSK */
00476 #if defined(TAMP_CR2_TAMP3MSK)
00477 #define RTC_TAMPER_3_MASK_FLAG             TAMP_CR2_TAMP3MSK
00478 #endif /* TAMP_CR2_TAMP3MSK */
00479 
00480 #if defined(RTC_TAMPCR_TAMP1MF)
00481 #define RTC_TAMPER_1_MASK_FLAG             RTC_TAMPCR_TAMP1MF
00482 #endif /* RTC_TAMPCR_TAMP1MF */
00483 #if defined(RTC_TAMPCR_TAMP2MF)
00484 #define RTC_TAMPER_2_MASK_FLAG             RTC_TAMPCR_TAMP2MF
00485 #endif /* RTC_TAMPCR_TAMP2MF */
00486 #if defined(RTC_TAMPCR_TAMP3MF)
00487 #define RTC_TAMPER_3_MASK_FLAG             RTC_TAMPCR_TAMP3MF
00488 #endif /* RTC_TAMPCR_TAMP3MF */
00489 
00490 #define RTC_TAMPER_X_MASK_FLAG             (RTC_TAMPER_1_MASK_FLAG |\
00491                                             RTC_TAMPER_2_MASK_FLAG |\
00492                                             RTC_TAMPER_3_MASK_FLAG)
00493 /**
00494   * @}
00495   */
00496 
00497 /** @defgroup RTCEx_Tamper_Filter_Definitions RTC Tamper Filter Definitions
00498   * @{
00499   */
00500 #if defined(TAMP_FLTCR_TAMPFLT)
00501 #define RTC_TAMPERFILTER_DISABLE   0x00000000U             /*!< Tamper filter is disabled */
00502 
00503 #define RTC_TAMPERFILTER_2SAMPLE   TAMP_FLTCR_TAMPFLT_0    /*!< Tamper is activated after 2
00504                                                                  consecutive samples at the active level */
00505 #define RTC_TAMPERFILTER_4SAMPLE   TAMP_FLTCR_TAMPFLT_1    /*!< Tamper is activated after 4
00506                                                                  consecutive samples at the active level */
00507 #define RTC_TAMPERFILTER_8SAMPLE   TAMP_FLTCR_TAMPFLT      /*!< Tamper is activated after 8
00508                                                                  consecutive samples at the active level */
00509 #define RTC_TAMPERFILTER_MASK      TAMP_FLTCR_TAMPFLT      /*!< Masking all bits except those of
00510                                                                  field TAMPFLT[1:0]. */
00511 #endif /* TAMP_FLTCR_TAMPFLT */
00512 #if defined(RTC_TAMPCR_TAMPFLT)
00513 #define RTC_TAMPERFILTER_DISABLE   0x00000000u             /*!< Tamper filter is disabled */
00514 
00515 #define RTC_TAMPERFILTER_2SAMPLE   RTC_TAMPCR_TAMPFLT_0    /*!< Tamper is activated after 2
00516                                                                  consecutive samples at the active level */
00517 #define RTC_TAMPERFILTER_4SAMPLE   RTC_TAMPCR_TAMPFLT_1    /*!< Tamper is activated after 4
00518                                                                  consecutive samples at the active level */
00519 #define RTC_TAMPERFILTER_8SAMPLE   RTC_TAMPCR_TAMPFLT      /*!< Tamper is activated after 8
00520                                                                  consecutive samples at the active level. */
00521 #define RTC_TAMPERFILTER_MASK      RTC_TAMPCR_TAMPFLT      /*!< Masking all bits except those of
00522                                                                  field TAMPFLT[1:0]. */
00523 #endif /* RTC_TAMPCR_TAMPFLT */
00524 /**
00525   * @}
00526   */
00527 
00528 /** @defgroup RTCEx_Tamper_Sampling_Frequencies_Definitions RTC Tamper Sampling Frequencies Definitions
00529   * @{
00530   */
00531 #if defined(TAMP_FLTCR_TAMPFREQ)
00532 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  0x00000000U                                     /*!< Each of the tamper inputs are sampled
00533                                                                                                       with a frequency =  RTCCLK / 32768 */
00534 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  TAMP_FLTCR_TAMPFREQ_0                           /*!< Each of the tamper inputs are sampled
00535                                                                                                       with a frequency =  RTCCLK / 16384 */
00536 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   TAMP_FLTCR_TAMPFREQ_1                           /*!< Each of the tamper inputs are sampled
00537                                                                                                       with a frequency =  RTCCLK / 8192  */
00538 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled
00539                                                                                                       with a frequency =  RTCCLK / 4096  */
00540 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   TAMP_FLTCR_TAMPFREQ_2                           /*!< Each of the tamper inputs are sampled
00541                                                                                                       with a frequency =  RTCCLK / 2048  */
00542 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
00543                                                                                                       with a frequency =  RTCCLK / 1024  */
00544 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    (TAMP_FLTCR_TAMPFREQ_1 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
00545                                                                                                       with a frequency =  RTCCLK / 512   */
00546 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    TAMP_FLTCR_TAMPFREQ                             /*!< Each of the tamper inputs are sampled
00547                                                                                                       with a frequency =  RTCCLK / 256   */
00548 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK      TAMP_FLTCR_TAMPFREQ                             /*!< Masking all bits except those of
00549                                                                                                       field TAMPFREQ[2:0]*/
00550 #endif /* TAMP_FLTCR_TAMPFREQ */
00551 #if defined(RTC_TAMPCR_TAMPFREQ)
00552 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  0x00000000u                                     /*!< Each of the tamper inputs are sampled
00553                                                                                                       with a frequency =  RTCCLK / 32768 */
00554 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  RTC_TAMPCR_TAMPFREQ_0                           /*!< Each of the tamper inputs are sampled
00555                                                                                                       with a frequency =  RTCCLK / 16384 */
00556 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   RTC_TAMPCR_TAMPFREQ_1                           /*!< Each of the tamper inputs are sampled
00557                                                                                                       with a frequency =  RTCCLK / 8192  */
00558 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled
00559                                                                                                       with a frequency =  RTCCLK / 4096  */
00560 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   RTC_TAMPCR_TAMPFREQ_2                           /*!< Each of the tamper inputs are sampled
00561                                                                                                       with a frequency =  RTCCLK / 2048  */
00562 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_2)  /*!< Each of the tamper inputs are sampled
00563                                                                                                       with a frequency =  RTCCLK / 1024  */
00564 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    (RTC_TAMPCR_TAMPFREQ_1 | RTC_TAMPCR_TAMPFREQ_2)  /*!< Each of the tamper inputs are sampled
00565                                                                                                       with a frequency =  RTCCLK / 512   */
00566 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    RTC_TAMPCR_TAMPFREQ                              /*!< Each of the tamper inputs are sampled
00567                                                                                                       with a frequency =  RTCCLK / 256   */
00568 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK      RTC_TAMPCR_TAMPFREQ                             /*!< Masking all bits except those of
00569                                                                                                       field TAMPFREQ[2:0]*/
00570 #endif /* RTC_TAMPCR_TAMPFREQ */
00571 /**
00572   * @}
00573   */
00574 
00575 /** @defgroup RTCEx_Tamper_Pin_Precharge_Duration_Definitions RTC Tamper Pin Precharge Duration Definitions
00576   * @{
00577   */
00578 #if defined(TAMP_FLTCR_TAMPPRCH)
00579 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK     0x00000000U             /*!< Tamper pins are pre-charged before
00580                                                                               sampling during 1 RTCCLK cycle  */
00581 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK     TAMP_FLTCR_TAMPPRCH_0   /*!< Tamper pins are pre-charged before
00582                                                                               sampling during 2 RTCCLK cycles */
00583 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK     TAMP_FLTCR_TAMPPRCH_1   /*!< Tamper pins are pre-charged before
00584                                                                               sampling during 4 RTCCLK cycles */
00585 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK     TAMP_FLTCR_TAMPPRCH     /*!< Tamper pins are pre-charged before
00586                                                                               sampling during 8 RTCCLK cycles */
00587 #define RTC_TAMPERPRECHARGEDURATION_MASK        TAMP_FLTCR_TAMPPRCH     /*!< Masking all bits except those of
00588                                                                               field TAMPPRCH[1:0] */
00589 #endif /* TAMP_FLTCR_TAMPPRCH */
00590 #if defined(RTC_TAMPCR_TAMPPRCH)
00591 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK     0x00000000u             /*!< Tamper pins are pre-charged before
00592                                                                               sampling during 1 RTCCLK cycle  */
00593 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK     RTC_TAMPCR_TAMPPRCH_0   /*!< Tamper pins are pre-charged before
00594                                                                               sampling during 2 RTCCLK cycles */
00595 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK     RTC_TAMPCR_TAMPPRCH_1   /*!< Tamper pins are pre-charged before
00596                                                                               sampling during 4 RTCCLK cycles */
00597 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK     RTC_TAMPCR_TAMPPRCH     /*!< Tamper pins are pre-charged before
00598                                                                               sampling during 8 RTCCLK cycles */
00599 #define RTC_TAMPERPRECHARGEDURATION_MASK        RTC_TAMPCR_TAMPPRCH     /*!< Masking all bits except those of
00600                                                                               field TAMPPRCH[1:0] */
00601 #endif /* RTC_TAMPCR_TAMPPRCH */
00602 /**
00603   * @}
00604   */
00605 
00606 /** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection_Definitions RTC Tamper TimeStamp On Tamper Detection Definitions
00607   * @{
00608   */
00609 #if defined(RTC_CR_TAMPTS)
00610 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE  0x00000000u                   /*!< TimeStamp on Tamper Detection event is not saved */
00611 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE   RTC_CR_TAMPTS                 /*!< TimeStamp on Tamper Detection event saved        */
00612 #define RTC_TIMESTAMPONTAMPERDETECTION_MASK     RTC_CR_TAMPTS                 /*!< Masking all bits except bit TAMPTS               */
00613 #endif  /* RTC_CR_TAMPTS */
00614 #if defined(RTC_TAMPCR_TAMPTS)
00615 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE  0x00000000u                   /*!< TimeStamp on Tamper Detection event is not saved */
00616 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE   RTC_TAMPCR_TAMPTS             /*!< TimeStamp on Tamper Detection event saved        */
00617 #define RTC_TIMESTAMPONTAMPERDETECTION_MASK     RTC_TAMPCR_TAMPTS             /*!< Masking all bits except bit TAMPTS               */
00618 #endif /* RTC_TAMPCR_TAMPTS */
00619 /**
00620   * @}
00621   */
00622 
00623 /** @defgroup RTCEx_Tamper_Pull_UP_Definitions RTC Tamper Pull Up Definitions
00624   * @{
00625   */
00626 #if defined(TAMP_FLTCR_TAMPPUDIS)
00627 #define RTC_TAMPER_PULLUP_ENABLE           0x00000000u              /*!< Tamper pins are pre-charged before sampling */
00628 #define RTC_TAMPER_PULLUP_DISABLE          TAMP_FLTCR_TAMPPUDIS     /*!< Tamper pins pre-charge is disabled          */
00629 #define RTC_TAMPER_PULLUP_MASK             TAMP_FLTCR_TAMPPUDIS     /*!< Maskin all bits except bit TAMPPUDIS        */
00630 #endif /* TAMP_FLTCR_TAMPPUDIS */
00631 #if defined(RTC_TAMPCR_TAMPPUDIS)
00632 #define RTC_TAMPER_PULLUP_ENABLE           0x00000000u              /*!< TimeStamp on Tamper Detection event saved        */
00633 #define RTC_TAMPER_PULLUP_DISABLE          RTC_TAMPCR_TAMPPUDIS     /*!< TimeStamp on Tamper Detection event is not saved */
00634 #define RTC_TAMPER_PULLUP_MASK             RTC_TAMPCR_TAMPPUDIS     /*!< Maskin all bits except bit TAMPPUDIS        */
00635 #endif /* RTC_TAMPCR_TAMPPUDIS */
00636 /**
00637   * @}
00638   */
00639 
00640 /** @defgroup RTCEx_Tamper_DetectionOutput_Definitions RTC Tamper Detection Output Definitions
00641   * @{
00642   */
00643 #if defined(RTC_CR_TAMPOE)
00644 #define RTC_TAMPERDETECTIONOUTPUT_DISABLE  0x00000000u                   /*!< The tamper flag is not routed on TAMPALRM */
00645 #define RTC_TAMPERDETECTIONOUTPUT_ENABLE   RTC_CR_TAMPOE                 /*!< The tamper flag is routed on TAMPALRM combined with the signal
00646                                                                                provided by OSEL and with the polarity provided by POL */
00647 #endif  /* RTC_CR_TAMPOE */
00648 /**
00649   * @}
00650   */
00651 
00652 /** @defgroup RTC_Tamper_Flags_Definitions RTC Tamper Flags Definitions
00653   * @{
00654   */
00655 #if defined(TAMP_SR_TAMP1F)
00656 #define RTC_FLAG_TAMP1F                   TAMP_SR_TAMP1F
00657 #endif /* TAMP_SR_TAMP1F */
00658 #if defined(TAMP_SR_TAMP2F)
00659 #define RTC_FLAG_TAMP2F                   TAMP_SR_TAMP2F
00660 #endif /* TAMP_SR_TAMP2F */
00661 #if defined(TAMP_SR_TAMP3F)
00662 #define RTC_FLAG_TAMP3F                   TAMP_SR_TAMP3F
00663 #endif /* TAMP_SR_TAMP3F */
00664 
00665 #if defined(RTC_ISR_TAMP1F)
00666 #define RTC_FLAG_TAMP1F                   RTC_ISR_TAMP1F
00667 #endif /* RTC_ISR_TAMP1F */
00668 #if defined(RTC_ISR_TAMP2F)
00669 #define RTC_FLAG_TAMP2F                   RTC_ISR_TAMP2F
00670 #endif /* RTC_ISR_TAMP2F */
00671 #if defined(RTC_ISR_TAMP3F)
00672 #define RTC_FLAG_TAMP3F                   RTC_ISR_TAMP3F
00673 #endif /* RTC_ISR_TAMP3F */
00674 /**
00675   * @}
00676   */
00677 
00678 /** @defgroup RTCEx_ActiveTamper_Enable RTCEx_ActiveTamper_Enable Definitions
00679   * @{
00680   */
00681 #define RTC_ATAMP_ENABLE                   1u
00682 #define RTC_ATAMP_DISABLE                  0u
00683 /**
00684   * @}
00685   */
00686 
00687 /** @defgroup RTCEx_ActiveTamper_Interrupt RTCEx_ActiveTamper_Interrupt Definitions
00688   * @{
00689   */
00690 #define RTC_ATAMP_INTERRUPT_ENABLE        1u
00691 #define RTC_ATAMP_INTERRUPT_DISABLE       0u
00692 /**
00693   * @}
00694   */
00695 
00696 /** @defgroup RTCEx_ActiveTamper_Filter RTCEx_ActiveTamper_Filter Definitions
00697   * @{
00698   */
00699 #define RTC_ATAMP_FILTER_ENABLE           TAMP_ATCR1_FLTEN
00700 #define RTC_ATAMP_FILTER_DISABLE          0u
00701 /**
00702   * @}
00703   */
00704 
00705 /** @defgroup RTCEx_ActiveTamper_Async_prescaler RTC Active_Tamper_Asynchronous_Prescaler clock Definitions
00706   * @{
00707   */
00708 #define RTC_ATAMP_ASYNCPRES_RTCCLK        0u                                                                      /*!< RTCCLK */
00709 #define RTC_ATAMP_ASYNCPRES_RTCCLK_2      TAMP_ATCR1_ATCKSEL_0                                                    /*!< RTCCLK/2 */
00710 #define RTC_ATAMP_ASYNCPRES_RTCCLK_4      TAMP_ATCR1_ATCKSEL_1                                                    /*!< RTCCLK/4 */
00711 #define RTC_ATAMP_ASYNCPRES_RTCCLK_8     (TAMP_ATCR1_ATCKSEL_1 | TAMP_ATCR1_ATCKSEL_0)                            /*!< RTCCLK/8 */
00712 #define RTC_ATAMP_ASYNCPRES_RTCCLK_16     TAMP_ATCR1_ATCKSEL_2                                                    /*!< RTCCLK/16 */
00713 #define RTC_ATAMP_ASYNCPRES_RTCCLK_32    (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_0)                            /*!< RTCCLK/32 */
00714 #define RTC_ATAMP_ASYNCPRES_RTCCLK_64    (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_1)                            /*!< RTCCLK/64 */
00715 #define RTC_ATAMP_ASYNCPRES_RTCCLK_128   (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_1 | TAMP_ATCR1_ATCKSEL_0)     /*!< RTCCLK/128 */
00716 /**
00717   * @}
00718   */
00719 
00720 /** @defgroup RTCEx_ActiveTamper_Sel  RTC Active Tamper selection Definition
00721   * @{
00722   */
00723 #define RTC_ATAMP_1                       0u   /*!< Tamper 1 */
00724 #define RTC_ATAMP_2                       1u   /*!< Tamper 2 */
00725 #define RTC_ATAMP_3                       2u   /*!< Tamper 3 */
00726 #define RTC_ATAMP_4                       3u   /*!< Tamper 4 */
00727 #define RTC_ATAMP_5                       4u   /*!< Tamper 5 */
00728 #define RTC_ATAMP_6                       5u   /*!< Tamper 6 */
00729 #define RTC_ATAMP_7                       6u   /*!< Tamper 7 */
00730 #define RTC_ATAMP_8                       7u   /*!< Tamper 8 */
00731 /**
00732   * @}
00733   */
00734 
00735 /** @defgroup RTCEx_MonotonicCounter_Instance  RTCEx Monotonic Counter Instance Definition
00736   * @{
00737   */
00738 #define RTC_MONOTONIC_COUNTER_1           0u   /*!< Monotonic counter 1 */
00739 /**
00740   * @}
00741   */
00742 
00743 /** @defgroup RTCEx_Tamper_Registers_Offset  RTC Tamper Registers Offset
00744   * @{
00745   */
00746 #if defined (TAMP_CR1_TAMP1E)
00747 /* Add this offset to RTC registers base address to reach TAMP registers base address. */
00748 #define TAMP_OFFSET (TAMP_BASE - RTC_BASE)
00749 #endif /* TAMP_CR1_TAMP1E */
00750 /**
00751   * @}
00752   */
00753 
00754 /* ========================================================================== */
00755 /*                   ##### RTC Wake-up exported constants #####               */
00756 /* ========================================================================== */
00757 
00758 /** @defgroup RTCEx_Wakeup_Timer_Definitions RTC Wakeup Timer Definitions
00759   * @{
00760   */
00761 #define RTC_WAKEUPCLOCK_RTCCLK_DIV16        0x00000000u
00762 #define RTC_WAKEUPCLOCK_RTCCLK_DIV8         RTC_CR_WUCKSEL_0
00763 #define RTC_WAKEUPCLOCK_RTCCLK_DIV4         RTC_CR_WUCKSEL_1
00764 #define RTC_WAKEUPCLOCK_RTCCLK_DIV2         (RTC_CR_WUCKSEL_0 | RTC_CR_WUCKSEL_1)
00765 #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS      RTC_CR_WUCKSEL_2
00766 #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS      (RTC_CR_WUCKSEL_1 | RTC_CR_WUCKSEL_2)
00767 /**
00768   * @}
00769   */
00770 
00771 /* ========================================================================== */
00772 /*        ##### Extended RTC Peripheral Control exported constants #####      */
00773 /* ========================================================================== */
00774 
00775 /** @defgroup RTCEx_Smooth_calib_period_Definitions RTC Smooth Calib Period Definitions
00776   * @{
00777   */
00778 #define RTC_SMOOTHCALIB_PERIOD_32SEC   0x00000000u             /*!< If RTCCLK = 32768 Hz, Smooth calibration
00779                                                                     period is 32s,  else 2exp20 RTCCLK pulses */
00780 #define RTC_SMOOTHCALIB_PERIOD_16SEC   RTC_CALR_CALW16         /*!< If RTCCLK = 32768 Hz, Smooth calibration
00781                                                                     period is 16s, else 2exp19 RTCCLK pulses */
00782 #define RTC_SMOOTHCALIB_PERIOD_8SEC    RTC_CALR_CALW8          /*!< If RTCCLK = 32768 Hz, Smooth calibration
00783                                                                     period is 8s, else 2exp18 RTCCLK pulses */
00784 /**
00785   * @}
00786   */
00787 
00788 /** @defgroup RTCEx_Smooth_calib_Plus_pulses_Definitions RTC Smooth Calib Plus pulses Definitions
00789   * @{
00790   */
00791 #define RTC_SMOOTHCALIB_PLUSPULSES_SET    RTC_CALR_CALP           /*!< The number of RTCCLK pulses added
00792                                                                        during a X -second window = Y - CALM[8:0]
00793                                                                        with Y = 512, 256, 128 when X = 32, 16, 8 */
00794 #define RTC_SMOOTHCALIB_PLUSPULSES_RESET  0x00000000u             /*!< The number of RTCCLK pulses subbstited
00795                                                                        during a 32-second window = CALM[8:0] */
00796 /**
00797   * @}
00798   */
00799 
00800 /** @defgroup RTCEx_Calib_Output_selection_Definitions RTC Calib Output Selection Definitions
00801   * @{
00802   */
00803 #define RTC_CALIBOUTPUT_512HZ            0x00000000u
00804 #define RTC_CALIBOUTPUT_1HZ              RTC_CR_COSEL
00805 /**
00806   * @}
00807   */
00808 
00809 /** @defgroup RTCEx_Add_1_Second_Parameter_Definitions RTC Add 1 Second Parameter Definitions
00810   * @{
00811   */
00812 #define RTC_SHIFTADD1S_RESET      0x00000000u
00813 #define RTC_SHIFTADD1S_SET        RTC_SHIFTR_ADD1S
00814 /**
00815   * @}
00816   */
00817 
00818 /**
00819   * @}
00820   */
00821 
00822 /* Exported macros -----------------------------------------------------------*/
00823 
00824 /** @defgroup RTCEx_Exported_Macros RTC Exported Macros
00825   * @{
00826   */
00827 
00828 /* ========================================================================== */
00829 /*                    ##### RTC Wake-up exported macros #####                 */
00830 /* ========================================================================== */
00831 
00832 /**
00833   * @brief  Enable the RTC WakeUp Timer peripheral.
00834   * @param  __HANDLE__ specifies the RTC handle.
00835   * @retval None
00836   */
00837 #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__)                     ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
00838 
00839 /**
00840   * @brief  Disable the RTC WakeUp Timer peripheral.
00841   * @param  __HANDLE__ specifies the RTC handle.
00842   * @retval None
00843   */
00844 #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__)                    ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
00845 
00846 /**
00847   * @brief  Enable the RTC WakeUpTimer interrupt.
00848   * @param  __HANDLE__ specifies the RTC handle.
00849   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled.
00850   *         This parameter can be:
00851   *            @arg @ref RTC_IT_WUT WakeUpTimer interrupt
00852   * @retval None
00853   */
00854 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
00855 
00856 /**
00857   * @brief  Disable the RTC WakeUpTimer interrupt.
00858   * @param  __HANDLE__ specifies the RTC handle.
00859   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be disabled.
00860   *         This parameter can be:
00861   *            @arg @ref RTC_IT_WUT WakeUpTimer interrupt
00862   * @retval None
00863   */
00864 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
00865 
00866 /**
00867   * @brief  Check whether the specified RTC WakeUpTimer interrupt has occurred or not.
00868   * @param  __HANDLE__ specifies the RTC handle.
00869   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to check.
00870   *         This parameter can be:
00871   *            @arg RTC_FLAG_WUTF WakeUpTimer interrupt flag
00872   * @retval None
00873   */
00874 #if defined(RTC_SR_WUTF)
00875 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->SR)  & (__INTERRUPT__)) != 0U) ? 1U : 0U)
00876 #endif /* RTC_SR_WUTF */
00877 #if defined(RTC_ISR_WUTF)
00878 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
00879 #endif /* RTC_ISR_WUTF */
00880 
00881 /**
00882   * @brief  Check whether the specified RTC Wake Up timer interrupt has been enabled or not.
00883   * @param  __HANDLE__ specifies the RTC handle.
00884   * @param  __INTERRUPT__ specifies the RTC Wake Up timer interrupt sources to check.
00885   *         This parameter can be:
00886   *            @arg @ref RTC_IT_WUT  WakeUpTimer interrupt
00887   * @retval None
00888   */
00889 #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)   (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
00890 
00891 #if defined(RTC_SR_WUTF)
00892 /**
00893   * @brief  Get the selected RTC WakeUpTimer's flag status.
00894   * @param  __HANDLE__ specifies the RTC handle.
00895   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag sources to check.
00896   *          This parameter can be:
00897   *             @arg @ref RTC_FLAG_WUTF
00898   * @retval Flag status
00899   */
00900 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)   (((((__HANDLE__)->Instance->SR)  & (__FLAG__)) != 0U) ? 1U : 0U)
00901 #endif /* RTC_SR_WUTF */
00902 #if defined(RTC_ISR_WUTF)
00903 /**
00904   * @brief  Get the selected RTC WakeUpTimer's flag status.
00905   * @param  __HANDLE__ specifies the RTC handle.
00906   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag sources to check.
00907   *          This parameter can be:
00908   *             @arg @ref RTC_FLAG_WUTF
00909   *             @arg @ref RTC_FLAG_WUTWF
00910   * @retval Flag status
00911   */
00912 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)   (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
00913 #endif /* RTC_ISR_WUTF */
00914 
00915 /**
00916   * @brief  Clear the RTC Wake Up timer's pending flags.
00917   * @param  __HANDLE__ specifies the RTC handle.
00918   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag to clear.
00919   *         This parameter can be:
00920   *            @arg @ref RTC_FLAG_WUTF
00921   * @retval None
00922   */
00923 #if defined(RTC_SCR_CWUTF)
00924 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SCR |= __FLAG__)
00925 #endif /* RTC_SCR_CWUTF */
00926 #if defined(RTC_ISR_WUTF)
00927 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
00928 #endif /* RTC_ISR_WUTF */
00929 
00930 /* ========================================================================== */
00931 /*                     ##### RTC Tamper exported macros #####                 */
00932 /* ========================================================================== */
00933 
00934 /**
00935   * @brief  Enable the RTC Tamper1 input detection.
00936   * @param  __HANDLE__ specifies the RTC handle.
00937   * @retval None
00938   */
00939 #if defined(TAMP_CR1_TAMP1E)
00940 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__)           (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP1E))
00941 #endif /* TAMP_CR1_TAMP1E */
00942 #if defined(RTC_TAMPCR_TAMP1E)
00943 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__)           ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP1E))
00944 #endif /* RTC_TAMPCR_TAMP1E */
00945 
00946 /**
00947   * @brief  Disable the RTC Tamper1 input detection.
00948   * @param  __HANDLE__ specifies the RTC handle.
00949   * @retval None
00950   */
00951 #if defined(TAMP_CR1_TAMP1E)
00952 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP1E))
00953 #endif /* TAMP_CR1_TAMP1E */
00954 #if defined(RTC_TAMPCR_TAMP1E)
00955 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP1E))
00956 #endif /* RTC_TAMPCR_TAMP1E */
00957 
00958 /**
00959   * @brief  Enable the RTC Tamper2 input detection.
00960   * @param  __HANDLE__ specifies the RTC handle.
00961   * @retval None
00962   */
00963 #if defined(TAMP_CR1_TAMP2E)
00964 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__)           (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP2E))
00965 #endif /* TAMP_CR1_TAMP2E */
00966 #if defined(RTC_TAMPCR_TAMP2E)
00967 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__)           ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP2E))
00968 #endif /* RTC_TAMPCR_TAMP2E */
00969 
00970 /**
00971   * @brief  Disable the RTC Tamper2 input detection.
00972   * @param  __HANDLE__ specifies the RTC handle.
00973   * @retval None
00974   */
00975 #if defined(TAMP_CR1_TAMP2E)
00976 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP2E))
00977 #endif /* TAMP_CR1_TAMP2E */
00978 #if defined(RTC_TAMPCR_TAMP2E)
00979 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP2E))
00980 #endif /* RTC_TAMPCR_TAMP2E */
00981 
00982 /**
00983   * @brief  Enable the RTC Tamper3 input detection.
00984   * @param  __HANDLE__ specifies the RTC handle.
00985   * @retval None
00986   */
00987 #if defined(TAMP_CR1_TAMP3E)
00988 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP3E))
00989 #endif /* TAMP_CR1_TAMP3E */
00990 #if defined(RTC_TAMPCR_TAMP3E)
00991 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP3E))
00992 #endif /* RTC_TAMPCR_TAMP3E */
00993 
00994 /**
00995   * @brief  Disable the RTC Tamper3 input detection.
00996   * @param  __HANDLE__ specifies the RTC handle.
00997   * @retval None
00998   */
00999 #if defined(TAMP_CR1_TAMP3E)
01000 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__)          (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP3E))
01001 #endif /* TAMP_CR1_TAMP3E */
01002 #if defined(RTC_TAMPCR_TAMP3E)
01003 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__)          ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP3E))
01004 #endif /* RTC_TAMPCR_TAMP3E */
01005 
01006 /**
01007   * @brief  Enable the RTC Tamper interrupt.
01008   * @param  __HANDLE__ specifies the RTC handle.
01009   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be enabled.
01010   *          This parameter can be any combination of the following values:
01011   *             @arg  RTC_IT_TAMPALL: All tampers interrupts
01012   *             @arg  RTC_IT_TAMP1: Tamper1 interrupt
01013   *             @arg  RTC_IT_TAMP2: Tamper2 interrupt
01014   *             @arg  RTC_IT_TAMP3: Tamper3 interrupt
01015   * @retval None
01016   */
01017 #if defined(TAMP_IER_TAMP1IE)
01018 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__)        (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER |= (__INTERRUPT__))
01019 #endif /* TAMP_IER_TAMP1IE */
01020 #if defined(RTC_TAMPCR_TAMP1IE)
01021 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__)        ((__HANDLE__)->Instance->TAMPCR |= (__INTERRUPT__))
01022 #endif /* RTC_TAMPCR_TAMP1IE */
01023 
01024 /**
01025   * @brief  Disable the RTC Tamper interrupt.
01026   * @param  __HANDLE__ specifies the RTC handle.
01027   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be disabled.
01028   *         This parameter can be any combination of the following values:
01029   *            @arg  RTC_IT_TAMP: All tampers interrupts
01030   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
01031   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt
01032   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt
01033   * @retval None
01034   */
01035 #if defined(TAMP_IER_TAMP1IE)
01036 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__)       (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER &= ~(__INTERRUPT__))
01037 #endif /* TAMP_IER_TAMP1IE */
01038 #if defined(RTC_TAMPCR_TAMP1IE)
01039 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__)       ((__HANDLE__)->Instance->TAMPCR &= ~(__INTERRUPT__))
01040 #endif /* RTC_TAMPCR_TAMP1IE */
01041 
01042 /**
01043   * @brief  Check whether the specified RTC Tamper interrupt has occurred or not.
01044   * @param  __HANDLE__ specifies the RTC handle.
01045   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt to check.
01046   *         This parameter can be:
01047   *            @arg  RTC_FLAG_TAMP1F: Tamper1 interrupt flag
01048   *            @arg  RTC_FLAG_TAMP2F: Tamper2 interrupt flag
01049   *            @arg  RTC_FLAG_TAMP3F: Tamper3 interrupt flag
01050   * @retval Flag status
01051   */
01052 #if defined(TAMP_SR_TAMP1F)
01053 #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__)     ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->SR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
01054 #endif /* TAMP_SR_TAMP1F */
01055 #if defined(RTC_ISR_TAMP1F)
01056 #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
01057 #endif /* RTC_ISR_TAMP1F */
01058 
01059 /**
01060   * @brief  Check whether the specified RTC Tamper interrupt has been enabled or not.
01061   * @param  __HANDLE__ specifies the RTC handle.
01062   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt source to check.
01063   *         This parameter can be:
01064   *            @arg  RTC_IT_TAMPALL: All tampers interrupts
01065   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
01066   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt
01067   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt
01068   * @retval Flag status
01069   */
01070 #if defined(TAMP_IER_TAMP1IE)
01071 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)    ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
01072 #endif /* TAMP_IER_TAMP1IE */
01073 #if defined(RTC_TAMPCR_TAMP1IE)
01074 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)    (((((__HANDLE__)->Instance->TAMPCR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
01075 #endif /* RTC_TAMPCR_TAMP1IE */
01076 
01077 /**
01078   * @brief  Get the selected RTC Tamper's flag status.
01079   * @param  __HANDLE__ specifies the RTC handle.
01080   * @param  __FLAG__ specifies the RTC Tamper Flag is pending or not.
01081   *          This parameter can be:
01082   *             @arg RTC_FLAG_TAMP1F: Tamper1 flag
01083   *             @arg RTC_FLAG_TAMP2F: Tamper2 flag
01084   *             @arg RTC_FLAG_TAMP3F: Tamper3 flag
01085   * @retval Flag status
01086   */
01087 #if defined(TAMP_SR_TAMP1F)
01088 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)   ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->SR) & (__FLAG__)) != 0U) ? 1U : 0U)
01089 #endif /* TAMP_SR_TAMP1F */
01090 #if defined(RTC_ISR_TAMP1F)
01091 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)                               (((((__HANDLE__)->Instance->ISR)                  & (__FLAG__)) != 0U) ? 1U : 0U)
01092 #endif /* RTC_ISR_TAMP1F */
01093 
01094 /**
01095   * @brief  Clear the RTC Tamper's pending flags.
01096   * @param  __HANDLE__ specifies the RTC handle.
01097   * @param  __FLAG__ specifies the RTC Tamper Flag to clear.
01098   *          This parameter can be:
01099   *             @arg RTC_FLAG_TAMP1F: Tamper1 flag
01100   *             @arg RTC_FLAG_TAMP2F: Tamper2 flag
01101   *             @arg RTC_FLAG_TAMP3F: Tamper3 flag
01102   * @retval None
01103   */
01104 #if defined(TAMP_SCR_CTAMP1F)
01105 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->SCR) |= (__FLAG__))
01106 #endif /* TAMP_SCR_CTAMP1F */
01107 #if defined(RTC_ISR_TAMP1F)
01108 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
01109 #endif /* RTC_ISR_TAMP1F */
01110 
01111 /**
01112   * @brief  Get the frequency at which each of the Tamper inputs are sampled.
01113   * @param  __HANDLE__ specifies the RTC handle.
01114   * @retval Sampling frequency
01115   *         This value can be:
01116   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768
01117   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384
01118   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192
01119   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096
01120   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048
01121   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512
01122   *            @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256
01123   */
01124 #if defined(TAMP_FLTCR_TAMPFREQ)
01125 #define __HAL_RTC_TAMPER_GET_SAMPLING_FREQ(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK)))
01126 #endif /* TAMP_FLTCR_TAMPFREQ */
01127 #if defined(RTC_TAMPCR_TAMPFREQ)
01128 #define __HAL_RTC_TAMPER_GET_SAMPLING_FREQ(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK)))
01129 #endif /* RTC_TAMPCR_TAMPFREQ */
01130 
01131 /**
01132   * @brief  Get the number of consecutive samples at the specified level needed
01133   *         to activate a Tamper event.
01134   * @param  __HANDLE__ specifies the RTC handle.
01135   * @retval Number of consecutive samples
01136   *         This value can be:
01137   *            @arg RTC_TAMPERFILTER_DISABLE
01138   *            @arg RTC_TAMPERFILTER_2SAMPLE
01139   *            @arg RTC_TAMPERFILTER_4SAMPLE
01140   *            @arg RTC_TAMPERFILTER_8SAMPLE
01141   */
01142 #if defined(TAMP_FLTCR_TAMPFLT)
01143 #define __HAL_RTC_TAMPER_GET_SAMPLES_COUNT(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERFILTER_MASK)))
01144 #endif /* TAMP_FLTCR_TAMPFLT */
01145 #if defined(RTC_TAMPCR_TAMPFLT)
01146 #define __HAL_RTC_TAMPER_GET_SAMPLES_COUNT(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERFILTER_MASK)))
01147 #endif /* RTC_TAMPCR_TAMPFLT */
01148 
01149 /**
01150   * @brief  Get the pull-up resistors precharge duration.
01151   * @param  __HANDLE__ specifies the RTC handle.
01152   * @retval Number of consecutive samples
01153   *         This value can be:
01154   *            @arg RTC_TAMPERPRECHARGEDURATION_1RTCCLK
01155   *            @arg RTC_TAMPERPRECHARGEDURATION_2RTCCLK
01156   *            @arg RTC_TAMPERPRECHARGEDURATION_4RTCCLK
01157   *            @arg RTC_TAMPERPRECHARGEDURATION_8RTCCLK
01158   */
01159 #if defined(TAMP_FLTCR_TAMPPRCH)
01160 #define __HAL_RTC_TAMPER_GET_PRCHRG_DURATION(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERPRECHARGEDURATION_MASK)))
01161 #endif /* TAMP_FLTCR_TAMPPRCH */
01162 #if defined(RTC_TAMPCR_TAMPPRCH)
01163 #define __HAL_RTC_TAMPER_GET_PRCHRG_DURATION(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERPRECHARGEDURATION_MASK)))
01164 #endif /* RTC_TAMPCR_TAMPPRCH */
01165 
01166 /**
01167   * @brief  Get the pull-up resistors status.
01168   * @param  __HANDLE__ specifies the RTC handle.
01169   * @retval Pull-up resistors status
01170   *         This value can be:
01171   *            @arg RTC_TAMPER_PULLUP_ENABLE
01172   *            @arg RTC_TAMPER_PULLUP_DISABLE
01173   */
01174 #if defined(TAMP_FLTCR_TAMPPUDIS)
01175 #define __HAL_RTC_TAMPER_GET_PULLUP_STATUS(__HANDLE__)   ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPER_PULLUP_MASK)))
01176 #endif /* TAMP_FLTCR_TAMPPUDIS */
01177 #if defined(RTC_TAMPCR_TAMPPUDIS)
01178 #define __HAL_RTC_TAMPER_GET_PULLUP_STATUS(__HANDLE__)   ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPER_PULLUP_MASK)))
01179 #endif /* RTC_TAMPCR_TAMPPUDIS */
01180 
01181 /* ========================================================================== */
01182 /*                  ##### RTC TimeStamp exported macros #####                 */
01183 /* ========================================================================== */
01184 
01185 /**
01186   * @brief  Enable the RTC TimeStamp peripheral.
01187   * @param  __HANDLE__ specifies the RTC handle.
01188   * @retval None
01189   */
01190 #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
01191 
01192 /**
01193   * @brief  Disable the RTC TimeStamp peripheral.
01194   * @param  __HANDLE__ specifies the RTC handle.
01195   * @retval None
01196   */
01197 #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
01198 
01199 /**
01200   * @brief  Enable the RTC TimeStamp interrupt.
01201   * @param  __HANDLE__ specifies the RTC handle.
01202   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be enabled.
01203   *         This parameter can be:
01204   *            @arg @ref RTC_IT_TS TimeStamp interrupt
01205   * @retval None
01206   */
01207 #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
01208 
01209 /**
01210   * @brief  Disable the RTC TimeStamp interrupt.
01211   * @param  __HANDLE__ specifies the RTC handle.
01212   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be disabled.
01213   *         This parameter can be:
01214   *            @arg @ref RTC_IT_TS TimeStamp interrupt
01215   * @retval None
01216   */
01217 #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
01218 
01219 /**
01220   * @brief  Check whether the specified RTC TimeStamp interrupt has occurred or not.
01221   * @param  __HANDLE__ specifies the RTC handle.
01222   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt source to check.
01223   *         This parameter can be:
01224   *            @arg @ref RTC_IT_TS TimeStamp interrupt
01225   * @retval None
01226   */
01227 #if defined(RTC_SR_TSF)
01228 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)        (((((__HANDLE__)->Instance->MISR) & ((__INTERRUPT__) >> 12)) != 0U) ? 1U : 0U)
01229 #endif /* RTC_SR_TSF */
01230 #if defined(RTC_ISR_TSF)
01231 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)        (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
01232 #endif /* RTC_ISR_TSF */
01233 /**
01234   * @brief  Check whether the specified RTC Time Stamp interrupt has been enabled or not.
01235   * @param  __HANDLE__ specifies the RTC handle.
01236   * @param  __INTERRUPT__ specifies the RTC Time Stamp interrupt source to check.
01237   *         This parameter can be:
01238   *            @arg @ref RTC_IT_TS TimeStamp interrupt
01239   * @retval None
01240   */
01241 #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
01242 
01243 /**
01244   * @brief  Get the selected RTC TimeStamp's flag status.
01245   * @param  __HANDLE__ specifies the RTC handle.
01246   * @param  __FLAG__ specifies the RTC TimeStamp Flag is pending or not.
01247   *         This parameter can be:
01248   *            @arg RTC_FLAG_TSF
01249   *            @arg RTC_FLAG_TSOVF
01250   * @retval Flag status
01251   */
01252 #if defined(RTC_SR_TSF)
01253 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)     (((((__HANDLE__)->Instance->SR)  & (__FLAG__)) != 0U) ? 1U : 0U)
01254 #endif /* RTC_SR_TSF */
01255 #if defined(RTC_ISR_TSF)
01256 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)     (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
01257 #endif /* RTC_ISR_TSF */
01258 
01259 /**
01260   * @brief  Clear the RTC Time Stamp's pending flags.
01261   * @param  __HANDLE__ specifies the RTC handle.
01262   * @param  __FLAG__ specifies the RTC Alarm Flag sources to clear.
01263   *          This parameter can be:
01264   *             @arg RTC_FLAG_TSF
01265   *             @arg RTC_FLAG_TSOVF
01266   * @retval None
01267   */
01268 #if defined(RTC_SCR_CTSF)
01269 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->SCR |= __FLAG__)
01270 #endif /* RTC_SCR_CTSF */
01271 #if defined(RTC_ISR_TSF)
01272 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->ISR = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)))
01273 #endif /* RTC_ISR_TSF */
01274 
01275 /**
01276   * @brief  Enable the RTC internal TimeStamp peripheral.
01277   * @param  __HANDLE__ specifies the RTC handle.
01278   * @retval None
01279   */
01280 #define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE))
01281 
01282 /**
01283   * @brief  Disable the RTC internal TimeStamp peripheral.
01284   * @param  __HANDLE__ specifies the RTC handle.
01285   * @retval None
01286   */
01287 #define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE))
01288 
01289 /**
01290   * @brief  Get the selected RTC Internal Time Stamp's flag status.
01291   * @param  __HANDLE__ specifies the RTC handle.
01292   * @param  __FLAG__ specifies the RTC Internal Time Stamp Flag is pending or not.
01293   *         This parameter can be:
01294   *            @arg RTC_FLAG_ITSF
01295   * @retval Flag status
01296   */
01297 #if defined(RTC_SR_ITSF)
01298 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)    (((((__HANDLE__)->Instance->SR)  & (__FLAG__)) != 0U) ? 1U : 0U)
01299 #endif /* RTC_SR_ITSF */
01300 #if defined(RTC_ISR_ITSF)
01301 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)    (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
01302 #endif /* RTC_ISR_ITSF */
01303 
01304 /**
01305   * @brief  Clear the RTC Internal Time Stamp's pending flags.
01306   * @param  __HANDLE__ specifies the RTC handle.
01307   * @param  __FLAG__ specifies the RTC Internal Time Stamp Flag source to clear.
01308   *          This parameter can be:
01309   *             @arg RTC_FLAG_ITSF
01310   * @note   This flag must be cleared together with TSF flag.
01311   * @retval None
01312   */
01313 #if defined(RTC_SCR_CITSF)
01314 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->SCR |= __FLAG__)
01315 #endif /* RTC_SCR_CITSF */
01316 #if defined(RTC_ISR_ITSF)
01317 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->ISR = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)))
01318 #endif /* RTC_ISR_ITSF */
01319 
01320 /**
01321   * @brief  Enable the RTC TimeStamp on Tamper detection.
01322   * @param  __HANDLE__ specifies the RTC handle.
01323   * @retval None
01324   */
01325 #if defined(RTC_CR_TAMPTS)
01326 #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_TIMESTAMPONTAMPERDETECTION_MASK))
01327 #endif /* RTC_CR_TAMPTS */
01328 #if defined(RTC_TAMPCR_TAMPTS)
01329 #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->TAMPCR |= (RTC_TIMESTAMPONTAMPERDETECTION_MASK))
01330 #endif /* RTC_TAMPCR_TAMPTS */
01331 
01332 /**
01333   * @brief  Disable the RTC TimeStamp on Tamper detection.
01334   * @param  __HANDLE__ specifies the RTC handle.
01335   * @retval None
01336   */
01337 #if defined(RTC_CR_TAMPTS)
01338 #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_TIMESTAMPONTAMPERDETECTION_MASK))
01339 #endif /* RTC_CR_TAMPTS */
01340 #if defined(RTC_TAMPCR_TAMPTS)
01341 #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TIMESTAMPONTAMPERDETECTION_MASK))
01342 #endif /* RTC_TAMPCR_TAMPTS */
01343 
01344 /**
01345   * @brief  Get activation status of the RTC TimeStamp on Tamper detection.
01346   * @param  __HANDLE__ specifies the RTC handle.
01347   * @retval Activation status of TimeStamp on Tamper detection
01348   *         This value can be:
01349   *            @arg RTC_TIMESTAMPONTAMPERDETECTION_ENABLE
01350   *            @arg RTC_TIMESTAMPONTAMPERDETECTION_DISABLE
01351   */
01352 #if defined(RTC_CR_TAMPTS)
01353 #define __HAL_RTC_TAMPTS_GET_STATUS(__HANDLE__)                   ((__HANDLE__)->Instance->CR &= RTC_TIMESTAMPONTAMPERDETECTION_MASK)
01354 #endif /* RTC_CR_TAMPTS */
01355 #if defined(RTC_TAMPCR_TAMPTS)
01356 #define __HAL_RTC_TAMPTS_GET_STATUS(__HANDLE__)                   ((__HANDLE__)->Instance->TAMPCR &= RTC_TIMESTAMPONTAMPERDETECTION_MASK)
01357 #endif /* RTC_TAMPCR_TAMPTS */
01358 
01359 #if defined(RTC_CR_TAMPOE)
01360 /**
01361   * @brief  Enable the RTC Tamper detection output.
01362   * @param  __HANDLE__ specifies the RTC handle.
01363   * @retval None
01364   */
01365 #define __HAL_RTC_TAMPOE_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_CR_TAMPOE))
01366 
01367 /**
01368   * @brief  Disable the RTC Tamper detection output.
01369   * @param  __HANDLE__ specifies the RTC handle.
01370   * @retval None
01371   */
01372 #define __HAL_RTC_TAMPOE_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TAMPOE))
01373 #endif /* RTC_CR_TAMPOE */
01374 
01375 /* ========================================================================== */
01376 /*         ##### Extended RTC Peripheral Control exported macros #####        */
01377 /* ========================================================================== */
01378 
01379 /**
01380   * @brief  Enable the RTC calibration output.
01381   * @param  __HANDLE__ specifies the RTC handle.
01382   * @retval None
01383   */
01384 #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
01385 
01386 /**
01387   * @brief  Disable the calibration output.
01388   * @param  __HANDLE__ specifies the RTC handle.
01389   * @retval None
01390   */
01391 #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
01392 
01393 /**
01394   * @brief  Enable the clock reference detection.
01395   * @param  __HANDLE__ specifies the RTC handle.
01396   * @retval None
01397   */
01398 #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
01399 
01400 /**
01401   * @brief  Disable the clock reference detection.
01402   * @param  __HANDLE__ specifies the RTC handle.
01403   * @retval None
01404   */
01405 #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
01406 
01407 /**
01408   * @brief  Get the selected RTC shift operation's flag status.
01409   * @param  __HANDLE__ specifies the RTC handle.
01410   * @param  __FLAG__ specifies the RTC shift operation Flag is pending or not.
01411   *          This parameter can be:
01412   *             @arg RTC_FLAG_SHPF
01413   * @retval Flag status
01414   */
01415 #if defined(RTC_ICSR_SHPF)
01416 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)         (((((__HANDLE__)->Instance->ICSR) & (__FLAG__)) != 0U) ? 1U : 0U)
01417 #endif /* RTC_ICSR_SHPF */
01418 #if defined(RTC_ISR_SHPF)
01419 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)         (((((__HANDLE__)->Instance->ISR)  & (__FLAG__)) != 0U) ? 1U : 0U)
01420 #endif /* RTC_ISR_SHPF */
01421 
01422 /* ========================================================================== */
01423 /*               ##### RTC Wake-up Interrupt exported macros #####            */
01424 /* ========================================================================== */
01425 
01426 /**
01427   * @brief  Enable interrupt on the RTC WakeUp Timer associated Exti line.
01428   * @retval None
01429   */
01430 #if defined(EXTI_D1)
01431 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI_D1->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01432 #else  /* EXTI */
01433 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI->IMR1    |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01434 #endif /* EXTI_D1 */
01435 /**
01436   * @brief  Disable interrupt on the RTC WakeUp Timer associated Exti line.
01437   * @retval None
01438   */
01439 #if defined(EXTI_D1)
01440 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI_D1->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01441 #else  /* EXTI */
01442 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI->IMR1    &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01443 #endif /* EXTI_D1 */
01444 
01445 /**
01446   * @brief  Enable event on the RTC WakeUp Timer associated Exti line.
01447   * @retval None
01448   */
01449 #if defined(EXTI_D1)
01450 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI_D1->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01451 #else  /* EXTI */
01452 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI->EMR1    |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01453 #endif /* EXTI_D1 */
01454 
01455 /**
01456   * @brief  Disable event on the RTC WakeUp Timer associated Exti line.
01457   * @retval None
01458   */
01459 #if defined(EXTI_D1)
01460 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI_D1->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01461 #else  /* EXTI */
01462 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI->EMR1    &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01463 #endif /* EXTI_D1 */
01464 
01465 /**
01466   * @brief  Enable event on the RTC WakeUp Timer associated D3 Exti line.
01467   * @retval None
01468   */
01469 #define __HAL_RTC_WAKEUPTIMER_EXTID3_ENABLE_EVENT()    (EXTI->D3PMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01470 
01471 /**
01472   * @brief  Disable event on the RTC WakeUp Timer associated D3 Exti line.
01473   * @retval None
01474   */
01475 #define __HAL_RTC_WAKEUPTIMER_EXTID3_DISABLE_EVENT()   (EXTI->D3PMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01476 
01477 #if defined(DUAL_CORE)
01478 /**
01479   * @brief  Enable interrupt on the RTC WakeUp Timer associated D2 Exti line.
01480   * @retval None
01481   */
01482 #define __HAL_RTC_WAKEUPTIMER_EXTID2_ENABLE_IT()       (EXTI_D2->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01483 
01484 /**
01485   * @brief  Disable interrupt on the RTC WakeUp Timer associated D2 Exti line.
01486   * @retval None
01487   */
01488 #define __HAL_RTC_WAKEUPTIMER_EXTID2_DISABLE_IT()      (EXTI_D2->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01489 
01490 /**
01491   * @brief  Enable event on the RTC WakeUp Timer associated D2 Exti line.
01492   * @retval None
01493   */
01494 #define __HAL_RTC_WAKEUPTIMER_EXTID2_ENABLE_EVENT()    (EXTI_D2->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01495 
01496 /**
01497   * @brief  Disable event on the RTC WakeUp Timer associated D2 Exti line.
01498   * @retval None
01499   */
01500 #define __HAL_RTC_WAKEUPTIMER_EXTID2_DISABLE_EVENT()   (EXTI_D2->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01501 
01502 #endif /* DUAL_CORE */
01503 
01504 /**
01505   * @brief  Enable falling edge trigger on the RTC WakeUp Timer associated Exti line.
01506   * @retval None
01507   */
01508 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01509 
01510 /**
01511   * @brief  Disable falling edge trigger on the RTC WakeUp Timer associated Exti line.
01512   * @retval None
01513   */
01514 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01515 
01516 /**
01517   * @brief  Enable rising edge trigger on the RTC WakeUp Timer associated Exti line.
01518   * @retval None
01519   */
01520 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01521 
01522 /**
01523   * @brief  Disable rising edge trigger on the RTC WakeUp Timer associated Exti line.
01524   * @retval None
01525   */
01526 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
01527 
01528 /**
01529   * @brief  Enable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
01530   * @retval None
01531   */
01532 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE()  do { \
01533                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();  \
01534                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE(); \
01535                                                                  } while(0)
01536 
01537 /**
01538   * @brief  Disable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
01539   * This parameter can be:
01540   * @retval None
01541   */
01542 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE()  do { \
01543                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();  \
01544                                                                    __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE(); \
01545                                                                   } while(0)
01546 
01547 /**
01548   * @brief Check whether the RTC WakeUp Timer associated Exti line interrupt flag is set or not.
01549   * @retval Line Status.
01550   */
01551 #if defined(EXTI_D1)
01552 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI_D1->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01553 #else  /* EXTI */
01554 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI->PR1    & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01555 #endif /* EXTI_D1 */
01556 
01557 /**
01558   * @brief Clear the RTC WakeUp Timer associated Exti line flag.
01559   * @retval None
01560   */
01561 #if defined(EXTI_D1)
01562 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI_D1->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01563 #else  /* EXTI */
01564 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI->PR1    = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01565 #endif /* EXTI_D1 */
01566 
01567 /**
01568   * @brief Check whether the RTC WakeUp Timer associated D3 Exti line interrupt flag is set or not.
01569   * @retval Line Status
01570   */
01571 #define __HAL_RTC_WAKEUPTIMER_EXTID3_GET_FLAG()            (EXTI_D3->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01572 
01573 /**
01574   * @brief Clear the RTC WakeUp Timer associated D3 Exti line flag.
01575   * @retval None.
01576   */
01577 #define __HAL_RTC_WAKEUPTIMER_EXTID3_CLEAR_FLAG()          (EXTI_D3->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01578 
01579 /**
01580   * @brief Generate a Software interrupt on the RTC WakeUp Timer associated Exti line.
01581   * @retval None.
01582   */
01583 #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT()         (EXTI->SWIER1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01584 
01585 #if defined(DUAL_CORE)
01586 
01587 /**
01588   * @brief Check whether the RTC WakeUp Timer associated D2 Exti line interrupt flag is set or not.
01589   * @retval Line Status.
01590   */
01591 #define __HAL_RTC_WAKEUPTIMER_EXTID2_GET_FLAG()            (EXTI_D2->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01592 
01593 /**
01594   * @brief Clear the RTC WakeUp Timer associated D2 Exti line flag.
01595   * @retval None.
01596   */
01597 #define __HAL_RTC_WAKEUPTIMER_EXTID2_CLEAR_FLAG()          (EXTI_D2->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01598 
01599 #endif /* DUAL_CORE */
01600 
01601 /* ========================================================================== */
01602 /*       ##### RTC TimeStamp and Tamper Interrupt exported macros #####       */
01603 /* ========================================================================== */
01604 
01605 /**
01606   * @brief  Enable interrupt on the RTC Tamper and Timestamp associated Exti line.
01607   * @retval None
01608   */
01609 #if defined(EXTI_D1)
01610 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI_D1->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01611 #else  /* EXTI */
01612 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI->IMR1    |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01613 #endif /* EXTI_D1 */
01614 
01615 /**
01616   * @brief  Disable interrupt on the RTC Tamper and Timestamp associated Exti line.
01617   * @retval None
01618   */
01619 #if defined(EXTI_D1)
01620 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI_D1->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01621 #else  /* EXTI */
01622 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI->IMR1    &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01623 #endif /* EXTI_D1 */
01624 
01625 /**
01626   * @brief  Enable event on the RTC Tamper and Timestamp associated Exti line.
01627   * @retval None
01628   */
01629 #if defined(EXTI_D1)
01630 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI_D1->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01631 #else  /* EXTI */
01632 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI->EMR1    |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01633 #endif /* EXTI_D1 */
01634 
01635 /**
01636   * @brief  Disable event on the RTC Tamper and Timestamp associated Exti line.
01637   * @retval None
01638   */
01639 #if defined(EXTI_D1)
01640 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI_D1->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01641 #else  /* EXTI */
01642 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI->EMR1    &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01643 #endif /* EXTI_D1 */
01644 
01645 #if defined(DUAL_CORE)
01646 /**
01647   * @brief  Enable interrupt on the RTC Tamper and Timestamp associated D2 Exti line.
01648   * @retval None
01649   */
01650 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_ENABLE_IT()      (EXTI_D2->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01651 
01652 /**
01653   * @brief  Disable interrupt on the RTC Tamper and Timestamp associated D2 Exti line.
01654   * @retval None
01655   */
01656 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_DISABLE_IT()     (EXTI_D2->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01657 
01658 
01659 /**
01660   * @brief  Enable event on the RTC Tamper and Timestamp associated D2 Exti line.
01661   * @retval None
01662   */
01663 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_ENABLE_EVENT()  (EXTI_D2->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01664 
01665 
01666 /**
01667   * @brief  Disable event on the RTC Tamper and Timestamp associated D2 Exti line.
01668   * @retval None
01669   */
01670 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_DISABLE_EVENT() (EXTI_D2->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01671 
01672 #endif /* DUAL_CORE */
01673 
01674 /**
01675   * @brief  Enable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
01676   * @retval None
01677   */
01678 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01679 
01680 /**
01681   * @brief  Disable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
01682   * @retval None
01683   */
01684 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01685 
01686 /**
01687   * @brief  Enable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
01688   * @retval None
01689   */
01690 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01691 
01692 /**
01693   * @brief  Disable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
01694   * @retval None
01695   */
01696 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
01697 
01698 /**
01699   * @brief  Enable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
01700   * @retval None
01701   */
01702 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE()  do { \
01703                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();  \
01704                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); \
01705                                                                       } while(0)
01706 
01707 /**
01708   * @brief  Disable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
01709   * @retval None
01710   */
01711 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE()  do { \
01712                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE();  \
01713                                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE(); \
01714                                                                        } while(0)
01715 
01716 /**
01717   * @brief Check whether the RTC Tamper and Timestamp associated Exti line interrupt flag is set or not.
01718   * @retval Line Status
01719   */
01720 #if defined(EXTI_D1)
01721 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI_D1->PR1 & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01722 #else  /* EXTI */
01723 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI->PR1    & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01724 #endif /* EXTI_D1 */
01725 
01726 /**
01727   * @brief Clear the RTC Tamper and Timestamp associated Exti line flag.
01728   * @retval None
01729   */
01730 #if defined(EXTI_D1)
01731 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI_D1->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01732 #else  /* EXTI */
01733 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI->PR1    = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01734 #endif /* EXTI_D1 */
01735 
01736 #if defined(DUAL_CORE)
01737 /**
01738   * @brief Check whether the RTC Tamper and Timestamp associated D2 Exti line interrupt flag is set or not.
01739   * @retval Line Status
01740   */
01741 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_GET_FLAG()       (EXTI_D2->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
01742 
01743 /**
01744   * @brief Clear the RTC Tamper and Timestamp associated D2 Exti line flag.
01745   * @retval None
01746   */
01747 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_CLEAR_FLAG()     (EXTI_D2->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01748 
01749 #endif  /* DUAL_CORE */
01750 
01751 /**
01752   * @brief Generate a Software interrupt on the RTC Tamper and Timestamp associated Exti line
01753   * @retval None
01754   */
01755 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()    (EXTI->SWIER1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
01756 
01757 /**
01758   * @}
01759   */
01760 
01761 /* Exported functions --------------------------------------------------------*/
01762 
01763 /** @defgroup RTCEx_Exported_Functions RTC Exported Functions
01764   * @{
01765   */
01766 
01767 /* ========================================================================== */
01768 /*                  ##### RTC TimeStamp exported functions #####              */
01769 /* ========================================================================== */
01770 
01771 /* RTC TimeStamp functions ****************************************************/
01772 
01773 /** @defgroup RTCEx_Exported_Functions_Group1 Extended RTC TimeStamp functions
01774   * @{
01775   */
01776 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
01777 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
01778 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
01779 HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc);
01780 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTimeStamp(RTC_HandleTypeDef *hrtc);
01781 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
01782 void              HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc);
01783 void              HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc);
01784 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
01785 /**
01786   * @}
01787   */
01788 
01789 /* ========================================================================== */
01790 /*                    ##### RTC Tamper exported functions #####               */
01791 /* ========================================================================== */
01792 
01793 /* RTC Tamper functions *******************************************************/
01794 
01795 /** @defgroup RTCEx_Exported_Functions_Group5 Extended RTC Tamper functions
01796   * @{
01797   */
01798 HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
01799 HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
01800 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
01801 #if defined(RTC_TAMPER_1)
01802 HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
01803 #endif /* RTC_TAMPER_1 */
01804 #if defined(RTC_TAMPER_2)
01805 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
01806 #endif /* RTC_TAMPER_2 */
01807 #if defined(RTC_TAMPER_3)
01808 HAL_StatusTypeDef HAL_RTCEx_PollForTamper3Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
01809 #endif /* RTC_TAMPER_3 */
01810 #if defined(RTC_TAMPER_1)
01811 void              HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc);
01812 #endif /* RTC_TAMPER_1 */
01813 #if defined(RTC_TAMPER_2)
01814 void              HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc);
01815 #endif /* RTC_TAMPER_2 */
01816 #if defined(RTC_TAMPER_3)
01817 void              HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc);
01818 #endif /* RTC_TAMPER_3 */
01819 #if defined(TAMP_CR1_ITAMP1E)
01820 HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper);
01821 HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper_IT(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper);
01822 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTamper(RTC_HandleTypeDef *hrtc, uint32_t IntTamper);
01823 HAL_StatusTypeDef HAL_RTCEx_PollForInternalTamperEvent(RTC_HandleTypeDef *hrtc, uint32_t IntTamper, uint32_t Timeout);
01824 #endif /* TAMP_CR1_ITAMP1E */
01825 void              HAL_RTCEx_InternalTamper1EventCallback(RTC_HandleTypeDef *hrtc);
01826 void              HAL_RTCEx_InternalTamper2EventCallback(RTC_HandleTypeDef *hrtc);
01827 void              HAL_RTCEx_InternalTamper3EventCallback(RTC_HandleTypeDef *hrtc);
01828 void              HAL_RTCEx_InternalTamper4EventCallback(RTC_HandleTypeDef *hrtc);
01829 void              HAL_RTCEx_InternalTamper5EventCallback(RTC_HandleTypeDef *hrtc);
01830 void              HAL_RTCEx_InternalTamper6EventCallback(RTC_HandleTypeDef *hrtc);
01831 void              HAL_RTCEx_InternalTamper8EventCallback(RTC_HandleTypeDef *hrtc);
01832 #if defined(TAMP_ATCR1_TAMP1AM)
01833 HAL_StatusTypeDef HAL_RTCEx_SetActiveTampers(RTC_HandleTypeDef *hrtc, RTC_ActiveTampersTypeDef *sAllTamper);
01834 #endif /* TAMP_ATCR1_TAMP1AM */
01835 #if defined(TAMP_ATSEEDR_SEED)
01836 HAL_StatusTypeDef HAL_RTCEx_SetActiveSeed(RTC_HandleTypeDef *hrtc, uint32_t *pSeed);
01837 #endif /* TAMP_ATSEEDR_SEED */
01838 #if defined(TAMP_ATCR1_TAMP1AM)
01839 HAL_StatusTypeDef HAL_RTCEx_DeactivateActiveTampers(RTC_HandleTypeDef *hrtc);
01840 #endif /* TAMP_ATCR1_TAMP1AM */
01841 
01842 /**
01843   * @}
01844   */
01845 
01846 /* ========================================================================== */
01847 /*                   ##### RTC Wake-up exported functions #####               */
01848 /* ========================================================================== */
01849 
01850 /* RTC Wake-up functions ******************************************************/
01851 
01852 /** @defgroup RTCEx_Exported_Functions_Group2 Extended RTC Wake-up functions
01853   * @{
01854   */
01855 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
01856 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
01857 HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
01858 uint32_t          HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc);
01859 void              HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc);
01860 void              HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc);
01861 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
01862 /**
01863   * @}
01864   */
01865 
01866 /* ========================================================================== */
01867 /*         ##### Extended RTC Backup registers exported functions #####       */
01868 /* ========================================================================== */
01869 
01870 /* Extended RTC Backup registers functions ************************************/
01871 
01872 /** @defgroup RTCEx_Exported_Functions_Group6 Extended RTC Backup register functions
01873   * @{
01874   */
01875 void     HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
01876 uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
01877 /**
01878   * @}
01879   */
01880 
01881 /* ========================================================================== */
01882 /*        ##### Extended RTC Peripheral Control exported functions #####      */
01883 /* ========================================================================== */
01884 
01885 /* Extended RTC Peripheral Control functions **********************************/
01886 
01887 /** @defgroup RTCEx_Exported_Functions_Group3 Extended Peripheral Control functions
01888   * @{
01889   */
01890 HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue);
01891 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
01892 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
01893 HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc);
01894 HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);
01895 HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);
01896 HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);
01897 HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);
01898 #if defined(TAMP_COUNTR)
01899 HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterIncrement(RTC_HandleTypeDef *hrtc,  uint32_t Instance);
01900 HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterGet(RTC_HandleTypeDef *hrtc, uint32_t *Counter,  uint32_t Instance);
01901 #endif /* TAMP_COUNTR */
01902 /**
01903   * @}
01904   */
01905 
01906 /* Extended RTC features functions *******************************************/
01907 
01908 /** @defgroup RTCEx_Exported_Functions_Group4 Extended features functions
01909   * @{
01910   */
01911 
01912 void              HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc);
01913 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
01914 /**
01915   * @}
01916   */
01917 
01918 /**
01919   * @}
01920   */
01921 
01922 /* Private types -------------------------------------------------------------*/
01923 /* Private variables ---------------------------------------------------------*/
01924 /* Private constants ---------------------------------------------------------*/
01925 /** @defgroup RTCEx_Private_Constants RTC Private Constants
01926   * @{
01927   */
01928 #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT  EXTI_IMR1_IM18  /*!< External interrupt line 18 Connected to the RTC Tamper and Time Stamp events */
01929 #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT       EXTI_IMR1_IM19  /*!< External interrupt line 19 Connected to the RTC Wakeup event */
01930 
01931 /* Masks Definition */
01932 #define RTC_TAMPER_X             ((uint32_t) (RTC_TAMPER_1 | RTC_TAMPER_2 | RTC_TAMPER_3))
01933 #define RTC_TAMPER_X_INTERRUPT   ((uint32_t) (RTC_IT_TAMP1 | RTC_IT_TAMP2 | RTC_IT_TAMP3))
01934 
01935 /**
01936   * @}
01937   */
01938 
01939 /* Private macros ------------------------------------------------------------*/
01940 /** @defgroup RTCEx_Private_Macros RTC Private Macros
01941   * @{
01942   */
01943 
01944 /** @defgroup RTCEx_IS_RTC_Definitions Private macros to check input parameters
01945   * @{
01946   */
01947 
01948 /* ========================================================================== */
01949 /*          ##### Extended RTC Backup registers private macros #####          */
01950 /* ========================================================================== */
01951 
01952 #define IS_RTC_BKP(__BKP__)                   ((__BKP__) < BKP_REG_NUMBER)
01953 
01954 /* ========================================================================== */
01955 /*                  ##### RTC TimeStamp private macros #####                  */
01956 /* ========================================================================== */
01957 
01958 #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
01959                                  ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
01960 
01961 #define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT))
01962 
01963 /* ========================================================================== */
01964 /*                    ##### RTC Wake-up private macros #####                  */
01965 /* ========================================================================== */
01966 
01967 #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16)       || \
01968                                     ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8)    || \
01969                                     ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4)    || \
01970                                     ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2)    || \
01971                                     ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
01972                                     ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
01973 
01974 #define IS_RTC_WAKEUP_COUNTER(COUNTER)  ((COUNTER) <= RTC_WUTR_WUT)
01975 
01976 /* ========================================================================== */
01977 /*               ##### RTC Smooth Calibration private macros #####            */
01978 /* ========================================================================== */
01979 
01980 #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
01981                                             ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
01982                                             ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
01983 
01984 #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
01985                                         ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
01986 
01987 #define  IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= RTC_CALR_CALM)
01988 
01989 /* ========================================================================== */
01990 /*          ##### Extended RTC Peripheral Control private macros #####        */
01991 /* ========================================================================== */
01992 
01993 #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
01994                                  ((SEL) == RTC_SHIFTADD1S_SET))
01995 
01996 #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= RTC_SHIFTR_SUBFS)
01997 
01998 #define IS_RTC_CALIB_OUTPUT(OUTPUT)  (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
01999                                       ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
02000 
02001 /* ========================================================================== */
02002 /*                    ##### RTC Tamper private macros #####                   */
02003 /* ========================================================================== */
02004 
02005 #define IS_RTC_TAMPER(__TAMPER__)  ((((__TAMPER__) &  RTC_TAMPER_X) != 0x00U) &&  \
02006                                     (((__TAMPER__) & ~RTC_TAMPER_X) == 0x00U))
02007 
02008 #if defined(RTC_ALL_TAMPER_INTERRUPT)
02009 #define IS_RTC_TAMPER_INTERRUPT(__INTERRUPT__)                                                           \
02010               ((((__INTERRUPT__) & (  RTC_TAMPER_X_INTERRUPT | RTC_ALL_TAMPER_INTERRUPT )) != 0x00U) &&  \
02011                (((__INTERRUPT__) & (~(RTC_TAMPER_X_INTERRUPT | RTC_ALL_TAMPER_INTERRUPT))) == 0x00U))
02012 #else  /* RTC_ALL_TAMPER_INTERRUPT not defined */
02013 #define IS_RTC_TAMPER_INTERRUPT(__INTERRUPT__)                              \
02014               ((((__INTERRUPT__) &   RTC_TAMPER_X_INTERRUPT ) != 0x00U) &&  \
02015                (((__INTERRUPT__) & (~RTC_TAMPER_X_INTERRUPT)) == 0x00U))
02016 #endif /* RTC_ALL_TAMPER_INTERRUPT */
02017 
02018 #define IS_RTC_TAMPER_TRIGGER(__TRIGGER__) (((__TRIGGER__) == RTC_TAMPERTRIGGER_RISINGEDGE)    || \
02019                                             ((__TRIGGER__) == RTC_TAMPERTRIGGER_FALLINGEDGE)   || \
02020                                             ((__TRIGGER__) == RTC_TAMPERTRIGGER_LOWLEVEL)      || \
02021                                             ((__TRIGGER__) == RTC_TAMPERTRIGGER_HIGHLEVEL))
02022 
02023 #define IS_RTC_TAMPER_ERASE_MODE(__MODE__)             (((__MODE__) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \
02024                                                         ((__MODE__) == RTC_TAMPER_ERASE_BACKUP_DISABLE))
02025 
02026 #define IS_RTC_TAMPER_MASKFLAG_STATE(__STATE__)        (((__STATE__) == RTC_TAMPERMASK_FLAG_ENABLE) || \
02027                                                         ((__STATE__) == RTC_TAMPERMASK_FLAG_DISABLE))
02028 
02029 #define IS_RTC_TAMPER_FILTER(__FILTER__)  (((__FILTER__) == RTC_TAMPERFILTER_DISABLE) || \
02030                                            ((__FILTER__) == RTC_TAMPERFILTER_2SAMPLE) || \
02031                                            ((__FILTER__) == RTC_TAMPERFILTER_4SAMPLE) || \
02032                                            ((__FILTER__) == RTC_TAMPERFILTER_8SAMPLE))
02033 
02034 #define IS_RTC_TAMPER_SAMPLING_FREQ(__FREQ__) (((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
02035                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
02036                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
02037                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
02038                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
02039                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
02040                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512)  || \
02041                                                ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
02042 
02043 #define IS_RTC_TAMPER_PRECHARGE_DURATION(__DURATION__) (((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
02044                                                         ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
02045                                                         ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
02046                                                         ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
02047 
02048 #define IS_RTC_TAMPER_PULLUP_STATE(__STATE__) (((__STATE__) == RTC_TAMPER_PULLUP_ENABLE) || \
02049                                                ((__STATE__) == RTC_TAMPER_PULLUP_DISABLE))
02050 
02051 #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(__DETECTION__) (((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
02052                                                                   ((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
02053 
02054 #if defined(RTC_CR_TAMPOE)
02055 #define IS_RTC_TAMPER_TAMPERDETECTIONOUTPUT(__MODE__) (((__MODE__) == RTC_TAMPERDETECTIONOUTPUT_ENABLE) || \
02056                                                        ((__MODE__) == RTC_TAMPERDETECTIONOUTPUT_DISABLE))
02057 #endif /* RTC_CR_TAMPOE */
02058 
02059 #define IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(FILTER, TRIGGER)            \
02060                   (  (  ((FILTER) != RTC_TAMPERFILTER_DISABLE)          \
02061                      && (  ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL)    \
02062                         || ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))) \
02063                   || (  ((FILTER) == RTC_TAMPERFILTER_DISABLE)          \
02064                      && (  ((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE)  \
02065                         || ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE))))
02066 
02067 #define IS_RTC_INTERNAL_TAMPER(__INT_TAMPER__)   ((((__INT_TAMPER__) &  RTC_INT_TAMPER_ALL) != 0x00U) && \
02068                                                   (((__INT_TAMPER__) & ~RTC_INT_TAMPER_ALL) == 0x00U))
02069 
02070 /**
02071   * @}
02072   */
02073 
02074 /**
02075   * @}
02076   */
02077 
02078 /**
02079   * @}
02080   */
02081 
02082 /**
02083   * @}
02084   */
02085 
02086 #ifdef __cplusplus
02087 }
02088 #endif /* __cplusplus */
02089 
02090 #endif /* STM32H7xx_HAL_RTC_EX_H */
02091