STM32H735xx HAL User Manual
|
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