1 /** 2 ****************************************************************************** 3 * @file stm32h7xx_hal_rtc_ex.h 4 * @author MCD Application Team 5 * @brief Header file of RTC HAL Extension module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2017 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32H7xx_HAL_RTC_EX_H 21 #define STM32H7xx_HAL_RTC_EX_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif /* __cplusplus */ 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32h7xx_hal_def.h" 29 30 /** @addtogroup STM32H7xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @defgroup RTCEx RTCEx 35 * @{ 36 */ 37 38 /* Exported types ------------------------------------------------------------*/ 39 40 /** @defgroup RTCEx_Exported_Types RTCEx Exported Types 41 * @{ 42 */ 43 44 /** @defgroup RTCEx_Tamper_structure_definition RTC Tamper structure definition 45 * @{ 46 */ 47 typedef struct 48 { 49 uint32_t Tamper; /*!< Specifies the Tamper Pin. 50 This parameter can be a value of @ref RTCEx_Tamper_Pins_Definitions */ 51 52 uint32_t Interrupt; /*!< Specifies the Tamper Interrupt. 53 This parameter can be a value of @ref RTCEx_Tamper_Interrupt_Definitions */ 54 55 uint32_t Trigger; /*!< Specifies the Tamper Trigger. 56 This parameter can be a value of @ref RTCEx_Tamper_Trigger_Definitions */ 57 58 uint32_t NoErase; /*!< Specifies the Tamper no erase mode. 59 This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp_Definitions */ 60 61 uint32_t MaskFlag; /*!< Specifies the Tamper Flag masking. 62 This parameter can be a value of @ref RTCEx_Tamper_MaskFlag_Definitions */ 63 64 uint32_t Filter; /*!< Specifies the TAMP Filter Tamper. 65 This parameter can be a value of @ref RTCEx_Tamper_Filter_Definitions */ 66 67 uint32_t SamplingFrequency; /*!< Specifies the sampling frequency. 68 This parameter can be a value of @ref RTCEx_Tamper_Sampling_Frequencies_Definitions */ 69 70 uint32_t PrechargeDuration; /*!< Specifies the Precharge Duration . 71 This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration_Definitions */ 72 73 uint32_t TamperPullUp; /*!< Specifies the Tamper PullUp . 74 This parameter can be a value of @ref RTCEx_Tamper_Pull_UP_Definitions */ 75 76 uint32_t TimeStampOnTamperDetection; /*!< Specifies the TimeStampOnTamperDetection. 77 This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */ 78 } RTC_TamperTypeDef; 79 /** 80 * @} 81 */ 82 83 #if defined(TAMP) 84 /** @defgroup RTCEx_Internal_Tamper_structure_definition RTCEx Internal Tamper structure definition 85 * @{ 86 */ 87 typedef struct 88 { 89 uint32_t IntTamper; /*!< Specifies the Internal Tamper Pin. 90 This parameter can be a value of @ref RTCEx_Internal_Tamper_Pins_Definitions */ 91 92 uint32_t TimeStampOnTamperDetection; /*!< Specifies the TimeStampOnTamperDetection. 93 This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */ 94 } RTC_InternalTamperTypeDef; 95 /** 96 * @} 97 */ 98 99 /** @defgroup RTCEx_Active_Seed_Size Seed size Definitions 100 * @{ 101 */ 102 #define RTC_ATAMP_SEED_NB_UINT32 4U 103 /** 104 * @} 105 */ 106 107 /** @defgroup RTCEx_Active_Tampers_Number Active Tampers number Definitions 108 * @{ 109 */ 110 #define RTC_TAMP_NB 3u 111 /** 112 * @} 113 */ 114 115 /** @defgroup RTCEx_ActiveTamper_structures_definition RTC Active Tamper structures definitions 116 * @{ 117 */ 118 typedef struct 119 { 120 uint32_t Enable; /*!< Specifies the Tamper input is active. 121 This parameter can be a value of @ref RTCEx_ActiveTamper_Enable */ 122 123 uint32_t Interrupt; /*!< Specifies the interrupt mode 124 This parameter can be a value of @ref RTCEx_ActiveTamper_Interrupt */ 125 126 uint32_t Output; /*!< Specifies the TAMP output to be compared with. 127 The same output can be used for several tamper inputs. 128 This parameter can be a value of @ref RTCEx_ActiveTamper_Sel */ 129 130 uint32_t NoErase; /*!< Specifies the Tamper no erase mode. 131 This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp_Definitions */ 132 133 uint32_t MaskFlag; /*!< Specifies the Tamper Flag masking. 134 This parameter can be a value of @ref RTCEx_Tamper_MaskFlag_Definitions */ 135 136 } RTC_ATampInputTypeDef; 137 138 139 typedef struct 140 { 141 uint32_t ActiveFilter; /*!< Specifies the Active tamper filter enable. 142 This parameter can be a value of @ref RTCEx_ActiveTamper_Filter */ 143 144 uint32_t ActiveAsyncPrescaler; /*!< Specifies the Active Tamper asynchronous Prescaler clock. 145 This parameter can be a value of @ref RTCEx_ActiveTamper_Async_prescaler */ 146 147 uint32_t TimeStampOnTamperDetection; /*!< Specifies the timeStamp on tamper detection. 148 This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */ 149 150 uint32_t ActiveOutputChangePeriod; /*!< Specifies the Active Tamper output change period . 151 This parameter can be a value from 0 to 7. */ 152 153 uint32_t Seed[RTC_ATAMP_SEED_NB_UINT32]; 154 /*!< Specifies the Active Tamper RNG Seed value . 155 This parameter can be a value from 0 to (2^32-1) */ 156 157 RTC_ATampInputTypeDef TampInput[RTC_TAMP_NB]; 158 /*!< Specifies configuration of all active tampers. 159 The index of TampInput[RTC_TAMP_NB] can be a value of RTCEx_ActiveTamper_Sel */ 160 } RTC_ActiveTampersTypeDef; 161 162 /** 163 * @} 164 */ 165 #endif /* TAMP */ 166 167 /** 168 * @} 169 */ 170 171 /* Exported constants --------------------------------------------------------*/ 172 173 /** @defgroup RTCEx_Exported_Constants RTC Exported Constants 174 * @{ 175 */ 176 177 /* ========================================================================== */ 178 /* ##### Extended RTC Backup registers exported constants ##### */ 179 /* ========================================================================== */ 180 181 /** @defgroup RTCEx_Backup_Registers_Number_Definitions RTC Backup Registers Number Definitions 182 * @{ 183 */ 184 #if defined(TAMP) 185 #define BKP_REG_NUMBER TAMP_BKP_NUMBER 186 #else 187 #define BKP_REG_NUMBER RTC_BKP_NUMBER 188 #endif /* TAMP */ 189 /** 190 * @} 191 */ 192 193 /** @defgroup RTCEx_Backup_Registers_Definitions RTC Backup Registers Definitions 194 * @{ 195 */ 196 #define RTC_BKP_DR0 0x00u 197 #define RTC_BKP_DR1 0x01u 198 #define RTC_BKP_DR2 0x02u 199 #define RTC_BKP_DR3 0x03u 200 #define RTC_BKP_DR4 0x04u 201 #define RTC_BKP_DR5 0x05u 202 #define RTC_BKP_DR6 0x06u 203 #define RTC_BKP_DR7 0x07u 204 #define RTC_BKP_DR8 0x08u 205 #define RTC_BKP_DR9 0x09u 206 #define RTC_BKP_DR10 0x0Au 207 #define RTC_BKP_DR11 0x0Bu 208 #define RTC_BKP_DR12 0x0Cu 209 #define RTC_BKP_DR13 0x0Du 210 #define RTC_BKP_DR14 0x0Eu 211 #define RTC_BKP_DR15 0x0Fu 212 #define RTC_BKP_DR16 0x10u 213 #define RTC_BKP_DR17 0x11u 214 #define RTC_BKP_DR18 0x12u 215 #define RTC_BKP_DR19 0x13u 216 #define RTC_BKP_DR20 0x14u 217 #define RTC_BKP_DR21 0x15u 218 #define RTC_BKP_DR22 0x16u 219 #define RTC_BKP_DR23 0x17u 220 #define RTC_BKP_DR24 0x18u 221 #define RTC_BKP_DR25 0x19u 222 #define RTC_BKP_DR26 0x1Au 223 #define RTC_BKP_DR27 0x1Bu 224 #define RTC_BKP_DR28 0x1Cu 225 #define RTC_BKP_DR29 0x1Du 226 #define RTC_BKP_DR30 0x1Eu 227 #define RTC_BKP_DR31 0x1Fu 228 /** 229 * @} 230 */ 231 232 /* ========================================================================== */ 233 /* ##### RTC TimeStamp exported constants ##### */ 234 /* ========================================================================== */ 235 236 /** @defgroup RTCEx_TimeStamp_Edges_definitions RTC TimeStamp Edges Definitions 237 * 238 * @{ 239 */ 240 #define RTC_TIMESTAMPEDGE_RISING 0x00000000u 241 #define RTC_TIMESTAMPEDGE_FALLING RTC_CR_TSEDGE 242 /** 243 * @} 244 */ 245 246 /** @defgroup RTCEx_TimeStamp_Pin_Selection RTC TimeStamp Pin Selection 247 * @{ 248 */ 249 #define RTC_TIMESTAMPPIN_DEFAULT 0x00000000u 250 /** 251 * @} 252 */ 253 254 255 /* ========================================================================== */ 256 /* ##### RTC Tamper exported constants ##### */ 257 /* ========================================================================== */ 258 259 /** @defgroup RTCEx_Tamper_Pins_Definitions RTC Tamper Pins Definitions 260 * @{ 261 */ 262 #if defined(TAMP) 263 #define RTC_TAMPER_1 TAMP_CR1_TAMP1E 264 #define RTC_TAMPER_2 TAMP_CR1_TAMP2E 265 #define RTC_TAMPER_3 TAMP_CR1_TAMP3E 266 #else 267 #define RTC_TAMPER_1 RTC_TAMPCR_TAMP1E 268 #define RTC_TAMPER_2 RTC_TAMPCR_TAMP2E 269 #define RTC_TAMPER_3 RTC_TAMPCR_TAMP3E 270 #endif /* TAMP */ 271 272 #define RTC_TAMPER_ALL (RTC_TAMPER_1 | RTC_TAMPER_2 | RTC_TAMPER_3) 273 /** 274 * @} 275 */ 276 277 /** @defgroup RTCEx_Tamper_Interrupt_Definitions RTC Tamper Interrupts Definitions 278 * @{ 279 */ 280 #if defined(TAMP) 281 #define RTC_IT_TAMP1 TAMP_IER_TAMP1IE /*!< Enable Tamper 1 Interrupt */ 282 #define RTC_IT_TAMP2 TAMP_IER_TAMP2IE /*!< Enable Tamper 2 Interrupt */ 283 #define RTC_IT_TAMP3 TAMP_IER_TAMP3IE /*!< Enable Tamper 3 Interrupt */ 284 #else 285 #define RTC_IT_TAMP1 RTC_TAMPCR_TAMP1IE /*!< Enable Tamper 1 Interrupt */ 286 #define RTC_IT_TAMP2 RTC_TAMPCR_TAMP2IE /*!< Enable Tamper 2 Interrupt */ 287 #define RTC_IT_TAMP3 RTC_TAMPCR_TAMP3IE /*!< Enable Tamper 3 Interrupt */ 288 #endif /* TAMP */ 289 290 #if defined(TAMP) 291 #define RTC_IT_TAMP 0x00000000u /*!< No such feature in RTC3 */ 292 #define RTC_IT_TAMPALL (RTC_IT_TAMP1 | RTC_IT_TAMP2 | RTC_IT_TAMP3) 293 #else 294 #define RTC_IT_TAMP RTC_TAMPCR_TAMPIE /*!< Enable all Tamper Interrupts */ 295 #define RTC_IT_TAMPALL RTC_IT_TAMP 296 #endif /* TAMP */ 297 /** 298 * @} 299 */ 300 301 /** @defgroup RTCEx_Internal_Tamper_Pins_Definitions RTCEx Internal Tamper Pins Definition 302 * @{ 303 */ 304 #if defined(TAMP) 305 #define RTC_INT_TAMPER_1 TAMP_CR1_ITAMP1E 306 #define RTC_INT_TAMPER_2 TAMP_CR1_ITAMP2E 307 #define RTC_INT_TAMPER_3 TAMP_CR1_ITAMP3E 308 #define RTC_INT_TAMPER_4 TAMP_CR1_ITAMP4E 309 #define RTC_INT_TAMPER_5 TAMP_CR1_ITAMP5E 310 #define RTC_INT_TAMPER_6 TAMP_CR1_ITAMP6E 311 #define RTC_INT_TAMPER_8 TAMP_CR1_ITAMP8E 312 313 #define RTC_INT_TAMPER_ALL (RTC_INT_TAMPER_1 | RTC_INT_TAMPER_2 |\ 314 RTC_INT_TAMPER_3 | RTC_INT_TAMPER_4 |\ 315 RTC_INT_TAMPER_5 | RTC_INT_TAMPER_6 |\ 316 RTC_INT_TAMPER_8) 317 #endif /* TAMP */ 318 /** 319 * @} 320 */ 321 322 /** @defgroup RTCEx_Internal_Tamper_Interrupt_Definitions RTC Internal Tamper Interrupt 323 * @{ 324 */ 325 #if defined(TAMP) 326 #define RTC_INTERNAL_TAMPER1_INTERRUPT TAMP_IER_ITAMP1IE /*!< Enable Internal Tamper 1 Interrupt */ 327 #define RTC_INTERNAL_TAMPER2_INTERRUPT TAMP_IER_ITAMP2IE /*!< Enable Internal Tamper 2 Interrupt */ 328 #define RTC_INTERNAL_TAMPER3_INTERRUPT TAMP_IER_ITAMP3IE /*!< Enable Internal Tamper 3 Interrupt */ 329 #define RTC_INTERNAL_TAMPER4_INTERRUPT TAMP_IER_ITAMP4IE /*!< Enable Internal Tamper 4 Interrupt */ 330 #define RTC_INTERNAL_TAMPER5_INTERRUPT TAMP_IER_ITAMP5IE /*!< Enable Internal Tamper 5 Interrupt */ 331 #define RTC_INTERNAL_TAMPER6_INTERRUPT TAMP_IER_ITAMP6IE /*!< Enable Internal Tamper 6 Interrupt */ 332 #define RTC_INTERNAL_TAMPER8_INTERRUPT TAMP_IER_ITAMP8IE /*!< Enable Internal Tamper 8 Interrupt */ 333 #endif /* TAMP */ 334 /** 335 * @} 336 */ 337 338 /** @defgroup RTCEx_Tamper_Trigger_Definitions RTC Tamper Triggers Definitions 339 * @{ 340 */ 341 #define RTC_TAMPERTRIGGER_RISINGEDGE 0x01u /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */ 342 #define RTC_TAMPERTRIGGER_FALLINGEDGE 0x02u /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */ 343 #define RTC_TAMPERTRIGGER_LOWLEVEL 0x04u /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */ 344 #define RTC_TAMPERTRIGGER_HIGHLEVEL 0x08u /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */ 345 346 #if defined(TAMP) 347 #define RTC_TAMPER_1_TRIGGER TAMP_CR2_TAMP1TRG 348 #define RTC_TAMPER_2_TRIGGER TAMP_CR2_TAMP2TRG 349 #define RTC_TAMPER_3_TRIGGER TAMP_CR2_TAMP3TRG 350 #else 351 #define RTC_TAMPER_1_TRIGGER RTC_TAMPCR_TAMP1TRG 352 #define RTC_TAMPER_2_TRIGGER RTC_TAMPCR_TAMP2TRG 353 #define RTC_TAMPER_3_TRIGGER RTC_TAMPCR_TAMP3TRG 354 #endif /* TAMP */ 355 356 #define RTC_TAMPER_X_TRIGGER (RTC_TAMPER_1_TRIGGER |\ 357 RTC_TAMPER_2_TRIGGER |\ 358 RTC_TAMPER_3_TRIGGER) 359 /** 360 * @} 361 */ 362 363 /** @defgroup RTCEx_Tamper_EraseBackUp_Definitions RTC Tamper EraseBackUp Definitions 364 * @{ 365 */ 366 #if defined(TAMP) 367 #define RTC_TAMPER_ERASE_BACKUP_ENABLE 0x00u 368 #define RTC_TAMPER_ERASE_BACKUP_DISABLE 0x01u 369 #else 370 #define RTC_TAMPER_ERASE_BACKUP_ENABLE 0x00000000u 371 #define RTC_TAMPER_ERASE_BACKUP_DISABLE RTC_TAMPCR_TAMP1NOERASE 372 #endif /* TAMP */ 373 374 #if defined(TAMP) 375 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_1 TAMP_CR2_TAMP1NOERASE 376 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_2 TAMP_CR2_TAMP2NOERASE 377 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_3 TAMP_CR2_TAMP3NOERASE 378 #else 379 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_1 RTC_TAMPCR_TAMP1NOERASE 380 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_2 RTC_TAMPCR_TAMP2NOERASE 381 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_3 RTC_TAMPCR_TAMP3NOERASE 382 #endif /* TAMP */ 383 384 #define RTC_DISABLE_BKP_ERASE_ON_TAMPER_MASK (RTC_DISABLE_BKP_ERASE_ON_TAMPER_1 |\ 385 RTC_DISABLE_BKP_ERASE_ON_TAMPER_2 |\ 386 RTC_DISABLE_BKP_ERASE_ON_TAMPER_3) 387 /** 388 * @} 389 */ 390 391 /** @defgroup RTCEx_Tamper_MaskFlag_Definitions RTC Tamper Mask Flag Definitions 392 * @{ 393 */ 394 #if defined(TAMP) 395 #define RTC_TAMPERMASK_FLAG_DISABLE 0x00u 396 #define RTC_TAMPERMASK_FLAG_ENABLE 0x01u 397 #else 398 #define RTC_TAMPERMASK_FLAG_DISABLE 0x00000000u 399 #define RTC_TAMPERMASK_FLAG_ENABLE RTC_TAMPCR_TAMP1MF 400 #endif /* TAMP */ 401 402 #if defined(TAMP) 403 #define RTC_TAMPER_1_MASK_FLAG TAMP_CR2_TAMP1MSK 404 #define RTC_TAMPER_2_MASK_FLAG TAMP_CR2_TAMP2MSK 405 #define RTC_TAMPER_3_MASK_FLAG TAMP_CR2_TAMP3MSK 406 #else 407 #define RTC_TAMPER_1_MASK_FLAG RTC_TAMPCR_TAMP1MF 408 #define RTC_TAMPER_2_MASK_FLAG RTC_TAMPCR_TAMP2MF 409 #define RTC_TAMPER_3_MASK_FLAG RTC_TAMPCR_TAMP3MF 410 #endif /* TAMP */ 411 412 #define RTC_TAMPER_X_MASK_FLAG (RTC_TAMPER_1_MASK_FLAG |\ 413 RTC_TAMPER_2_MASK_FLAG |\ 414 RTC_TAMPER_3_MASK_FLAG) 415 /** 416 * @} 417 */ 418 419 /** @defgroup RTCEx_Tamper_Filter_Definitions RTC Tamper Filter Definitions 420 * @{ 421 */ 422 #if defined(TAMP) 423 #define RTC_TAMPERFILTER_DISABLE 0x00000000U /*!< Tamper filter is disabled */ 424 425 #define RTC_TAMPERFILTER_2SAMPLE TAMP_FLTCR_TAMPFLT_0 /*!< Tamper is activated after 2 426 consecutive samples at the active level */ 427 #define RTC_TAMPERFILTER_4SAMPLE TAMP_FLTCR_TAMPFLT_1 /*!< Tamper is activated after 4 428 consecutive samples at the active level */ 429 #define RTC_TAMPERFILTER_8SAMPLE TAMP_FLTCR_TAMPFLT /*!< Tamper is activated after 8 430 consecutive samples at the active level */ 431 #define RTC_TAMPERFILTER_MASK TAMP_FLTCR_TAMPFLT /*!< Masking all bits except those of 432 field TAMPFLT[1:0]. */ 433 #else 434 #define RTC_TAMPERFILTER_DISABLE 0x00000000u /*!< Tamper filter is disabled */ 435 436 #define RTC_TAMPERFILTER_2SAMPLE RTC_TAMPCR_TAMPFLT_0 /*!< Tamper is activated after 2 437 consecutive samples at the active level */ 438 #define RTC_TAMPERFILTER_4SAMPLE RTC_TAMPCR_TAMPFLT_1 /*!< Tamper is activated after 4 439 consecutive samples at the active level */ 440 #define RTC_TAMPERFILTER_8SAMPLE RTC_TAMPCR_TAMPFLT /*!< Tamper is activated after 8 441 consecutive samples at the active level. */ 442 #define RTC_TAMPERFILTER_MASK RTC_TAMPCR_TAMPFLT /*!< Masking all bits except those of 443 field TAMPFLT[1:0]. */ 444 #endif /* TAMP */ 445 /** 446 * @} 447 */ 448 449 /** @defgroup RTCEx_Tamper_Sampling_Frequencies_Definitions RTC Tamper Sampling Frequencies Definitions 450 * @{ 451 */ 452 #if defined(TAMP) 453 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 0x00000000U /*!< Each of the tamper inputs are sampled 454 with a frequency = RTCCLK / 32768 */ 455 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 TAMP_FLTCR_TAMPFREQ_0 /*!< Each of the tamper inputs are sampled 456 with a frequency = RTCCLK / 16384 */ 457 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 TAMP_FLTCR_TAMPFREQ_1 /*!< Each of the tamper inputs are sampled 458 with a frequency = RTCCLK / 8192 */ 459 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled 460 with a frequency = RTCCLK / 4096 */ 461 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 TAMP_FLTCR_TAMPFREQ_2 /*!< Each of the tamper inputs are sampled 462 with a frequency = RTCCLK / 2048 */ 463 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024 (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled 464 with a frequency = RTCCLK / 1024 */ 465 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 (TAMP_FLTCR_TAMPFREQ_1 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled 466 with a frequency = RTCCLK / 512 */ 467 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 TAMP_FLTCR_TAMPFREQ /*!< Each of the tamper inputs are sampled 468 with a frequency = RTCCLK / 256 */ 469 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK TAMP_FLTCR_TAMPFREQ /*!< Masking all bits except those of 470 field TAMPFREQ[2:0]*/ 471 #else 472 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 0x00000000u /*!< Each of the tamper inputs are sampled 473 with a frequency = RTCCLK / 32768 */ 474 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 RTC_TAMPCR_TAMPFREQ_0 /*!< Each of the tamper inputs are sampled 475 with a frequency = RTCCLK / 16384 */ 476 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 RTC_TAMPCR_TAMPFREQ_1 /*!< Each of the tamper inputs are sampled 477 with a frequency = RTCCLK / 8192 */ 478 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled 479 with a frequency = RTCCLK / 4096 */ 480 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 RTC_TAMPCR_TAMPFREQ_2 /*!< Each of the tamper inputs are sampled 481 with a frequency = RTCCLK / 2048 */ 482 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024 (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled 483 with a frequency = RTCCLK / 1024 */ 484 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 (RTC_TAMPCR_TAMPFREQ_1 | RTC_TAMPCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled 485 with a frequency = RTCCLK / 512 */ 486 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 RTC_TAMPCR_TAMPFREQ /*!< Each of the tamper inputs are sampled 487 with a frequency = RTCCLK / 256 */ 488 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK RTC_TAMPCR_TAMPFREQ /*!< Masking all bits except those of 489 field TAMPFREQ[2:0]*/ 490 #endif /* TAMP */ 491 /** 492 * @} 493 */ 494 495 /** @defgroup RTCEx_Tamper_Pin_Precharge_Duration_Definitions RTC Tamper Pin Precharge Duration Definitions 496 * @{ 497 */ 498 #if defined(TAMP) 499 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK 0x00000000U /*!< Tamper pins are pre-charged before 500 sampling during 1 RTCCLK cycle */ 501 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK TAMP_FLTCR_TAMPPRCH_0 /*!< Tamper pins are pre-charged before 502 sampling during 2 RTCCLK cycles */ 503 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK TAMP_FLTCR_TAMPPRCH_1 /*!< Tamper pins are pre-charged before 504 sampling during 4 RTCCLK cycles */ 505 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK TAMP_FLTCR_TAMPPRCH /*!< Tamper pins are pre-charged before 506 sampling during 8 RTCCLK cycles */ 507 #define RTC_TAMPERPRECHARGEDURATION_MASK TAMP_FLTCR_TAMPPRCH /*!< Masking all bits except those of 508 field TAMPPRCH[1:0] */ 509 #else 510 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK 0x00000000u /*!< Tamper pins are pre-charged before 511 sampling during 1 RTCCLK cycle */ 512 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK RTC_TAMPCR_TAMPPRCH_0 /*!< Tamper pins are pre-charged before 513 sampling during 2 RTCCLK cycles */ 514 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK RTC_TAMPCR_TAMPPRCH_1 /*!< Tamper pins are pre-charged before 515 sampling during 4 RTCCLK cycles */ 516 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK RTC_TAMPCR_TAMPPRCH /*!< Tamper pins are pre-charged before 517 sampling during 8 RTCCLK cycles */ 518 #define RTC_TAMPERPRECHARGEDURATION_MASK RTC_TAMPCR_TAMPPRCH /*!< Masking all bits except those of 519 field TAMPPRCH[1:0] */ 520 #endif /* TAMP */ 521 /** 522 * @} 523 */ 524 525 /** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection_Definitions RTC Tamper TimeStamp On Tamper Detection Definitions 526 * @{ 527 */ 528 #if defined(TAMP) 529 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 0x00000000u /*!< TimeStamp on Tamper Detection event is not saved */ 530 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE RTC_CR_TAMPTS /*!< TimeStamp on Tamper Detection event saved */ 531 #define RTC_TIMESTAMPONTAMPERDETECTION_MASK RTC_CR_TAMPTS /*!< Masking all bits except bit TAMPTS */ 532 #else 533 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 0x00000000u /*!< TimeStamp on Tamper Detection event is not saved */ 534 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE RTC_TAMPCR_TAMPTS /*!< TimeStamp on Tamper Detection event saved */ 535 #define RTC_TIMESTAMPONTAMPERDETECTION_MASK RTC_TAMPCR_TAMPTS /*!< Masking all bits except bit TAMPTS */ 536 #endif /* TAMP */ 537 /** 538 * @} 539 */ 540 541 /** @defgroup RTCEx_Tamper_Pull_UP_Definitions RTC Tamper Pull Up Definitions 542 * @{ 543 */ 544 #if defined(TAMP) 545 #define RTC_TAMPER_PULLUP_ENABLE 0x00000000u /*!< Tamper pins are pre-charged before sampling */ 546 #define RTC_TAMPER_PULLUP_DISABLE TAMP_FLTCR_TAMPPUDIS /*!< Tamper pins pre-charge is disabled */ 547 #define RTC_TAMPER_PULLUP_MASK TAMP_FLTCR_TAMPPUDIS /*!< Maskin all bits except bit TAMPPUDIS */ 548 #else 549 #define RTC_TAMPER_PULLUP_ENABLE 0x00000000u /*!< TimeStamp on Tamper Detection event saved */ 550 #define RTC_TAMPER_PULLUP_DISABLE RTC_TAMPCR_TAMPPUDIS /*!< TimeStamp on Tamper Detection event is not saved */ 551 #define RTC_TAMPER_PULLUP_MASK RTC_TAMPCR_TAMPPUDIS /*!< Maskin all bits except bit TAMPPUDIS */ 552 #endif /* TAMP */ 553 /** 554 * @} 555 */ 556 557 /** @defgroup RTCEx_Tamper_DetectionOutput_Definitions RTC Tamper Detection Output Definitions 558 * @{ 559 */ 560 #if defined(TAMP) 561 #define RTC_TAMPERDETECTIONOUTPUT_DISABLE 0x00000000u /*!< The tamper flag is not routed on TAMPALRM */ 562 #define RTC_TAMPERDETECTIONOUTPUT_ENABLE RTC_CR_TAMPOE /*!< The tamper flag is routed on TAMPALRM combined with the signal 563 provided by OSEL and with the polarity provided by POL */ 564 #endif /* TAMP */ 565 /** 566 * @} 567 */ 568 569 /** @defgroup RTC_Tamper_Flags_Definitions RTC Tamper Flags Definitions 570 * @{ 571 */ 572 #if defined(TAMP) 573 #define RTC_FLAG_TAMP1F TAMP_SR_TAMP1F 574 #define RTC_FLAG_TAMP2F TAMP_SR_TAMP2F 575 #define RTC_FLAG_TAMP3F TAMP_SR_TAMP3F 576 #else 577 #define RTC_FLAG_TAMP1F RTC_ISR_TAMP1F 578 #define RTC_FLAG_TAMP2F RTC_ISR_TAMP2F 579 #define RTC_FLAG_TAMP3F RTC_ISR_TAMP3F 580 #endif /* TAMP */ 581 /** 582 * @} 583 */ 584 585 /** @defgroup RTCEx_ActiveTamper_Enable RTCEx_ActiveTamper_Enable Definitions 586 * @{ 587 */ 588 #define RTC_ATAMP_ENABLE 1u 589 #define RTC_ATAMP_DISABLE 0u 590 /** 591 * @} 592 */ 593 594 /** @defgroup RTCEx_ActiveTamper_Interrupt RTCEx_ActiveTamper_Interrupt Definitions 595 * @{ 596 */ 597 #define RTC_ATAMP_INTERRUPT_ENABLE 1u 598 #define RTC_ATAMP_INTERRUPT_DISABLE 0u 599 /** 600 * @} 601 */ 602 603 /** @defgroup RTCEx_ActiveTamper_Filter RTCEx_ActiveTamper_Filter Definitions 604 * @{ 605 */ 606 #define RTC_ATAMP_FILTER_ENABLE TAMP_ATCR1_FLTEN 607 #define RTC_ATAMP_FILTER_DISABLE 0u 608 /** 609 * @} 610 */ 611 612 /** @defgroup RTCEx_ActiveTamper_Async_prescaler RTC Active_Tamper_Asynchronous_Prescaler clock Definitions 613 * @{ 614 */ 615 #define RTC_ATAMP_ASYNCPRES_RTCCLK 0u /*!< RTCCLK */ 616 #define RTC_ATAMP_ASYNCPRES_RTCCLK_2 TAMP_ATCR1_ATCKSEL_0 /*!< RTCCLK/2 */ 617 #define RTC_ATAMP_ASYNCPRES_RTCCLK_4 TAMP_ATCR1_ATCKSEL_1 /*!< RTCCLK/4 */ 618 #define RTC_ATAMP_ASYNCPRES_RTCCLK_8 (TAMP_ATCR1_ATCKSEL_1 | TAMP_ATCR1_ATCKSEL_0) /*!< RTCCLK/8 */ 619 #define RTC_ATAMP_ASYNCPRES_RTCCLK_16 TAMP_ATCR1_ATCKSEL_2 /*!< RTCCLK/16 */ 620 #define RTC_ATAMP_ASYNCPRES_RTCCLK_32 (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_0) /*!< RTCCLK/32 */ 621 #define RTC_ATAMP_ASYNCPRES_RTCCLK_64 (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_1) /*!< RTCCLK/64 */ 622 #define RTC_ATAMP_ASYNCPRES_RTCCLK_128 (TAMP_ATCR1_ATCKSEL_2 | TAMP_ATCR1_ATCKSEL_1 | TAMP_ATCR1_ATCKSEL_0) /*!< RTCCLK/128 */ 623 /** 624 * @} 625 */ 626 627 /** @defgroup RTCEx_ActiveTamper_Sel RTC Active Tamper selection Definition 628 * @{ 629 */ 630 #define RTC_ATAMP_1 0u /*!< Tamper 1 */ 631 #define RTC_ATAMP_2 1u /*!< Tamper 2 */ 632 #define RTC_ATAMP_3 2u /*!< Tamper 3 */ 633 #define RTC_ATAMP_4 3u /*!< Tamper 4 */ 634 #define RTC_ATAMP_5 4u /*!< Tamper 5 */ 635 #define RTC_ATAMP_6 5u /*!< Tamper 6 */ 636 #define RTC_ATAMP_7 6u /*!< Tamper 7 */ 637 #define RTC_ATAMP_8 7u /*!< Tamper 8 */ 638 /** 639 * @} 640 */ 641 642 /** @defgroup RTCEx_MonotonicCounter_Instance RTCEx Monotonic Counter Instance Definition 643 * @{ 644 */ 645 #define RTC_MONOTONIC_COUNTER_1 0u /*!< Monotonic counter 1 */ 646 /** 647 * @} 648 */ 649 650 /** @defgroup RTCEx_Tamper_Registers_Offset RTC Tamper Registers Offset 651 * @{ 652 */ 653 #if defined(TAMP) 654 /* Add this offset to RTC registers base address to reach TAMP registers base address. */ 655 #define TAMP_OFFSET (TAMP_BASE - RTC_BASE) 656 #endif /* TAMP */ 657 /** 658 * @} 659 */ 660 661 /* ========================================================================== */ 662 /* ##### RTC Wake-up exported constants ##### */ 663 /* ========================================================================== */ 664 665 /** @defgroup RTCEx_Wakeup_Timer_Definitions RTC Wakeup Timer Definitions 666 * @{ 667 */ 668 #define RTC_WAKEUPCLOCK_RTCCLK_DIV16 0x00000000u 669 #define RTC_WAKEUPCLOCK_RTCCLK_DIV8 RTC_CR_WUCKSEL_0 670 #define RTC_WAKEUPCLOCK_RTCCLK_DIV4 RTC_CR_WUCKSEL_1 671 #define RTC_WAKEUPCLOCK_RTCCLK_DIV2 (RTC_CR_WUCKSEL_0 | RTC_CR_WUCKSEL_1) 672 #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS RTC_CR_WUCKSEL_2 673 #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS (RTC_CR_WUCKSEL_1 | RTC_CR_WUCKSEL_2) 674 /** 675 * @} 676 */ 677 678 /* ========================================================================== */ 679 /* ##### Extended RTC Peripheral Control exported constants ##### */ 680 /* ========================================================================== */ 681 682 /** @defgroup RTCEx_Smooth_calib_period_Definitions RTC Smooth Calib Period Definitions 683 * @{ 684 */ 685 #define RTC_SMOOTHCALIB_PERIOD_32SEC 0x00000000u /*!< If RTCCLK = 32768 Hz, Smooth calibration 686 period is 32s, else 2exp20 RTCCLK pulses */ 687 #define RTC_SMOOTHCALIB_PERIOD_16SEC RTC_CALR_CALW16 /*!< If RTCCLK = 32768 Hz, Smooth calibration 688 period is 16s, else 2exp19 RTCCLK pulses */ 689 #define RTC_SMOOTHCALIB_PERIOD_8SEC RTC_CALR_CALW8 /*!< If RTCCLK = 32768 Hz, Smooth calibration 690 period is 8s, else 2exp18 RTCCLK pulses */ 691 /** 692 * @} 693 */ 694 695 /** @defgroup RTCEx_Smooth_calib_Plus_pulses_Definitions RTC Smooth Calib Plus pulses Definitions 696 * @{ 697 */ 698 #define RTC_SMOOTHCALIB_PLUSPULSES_SET RTC_CALR_CALP /*!< The number of RTCCLK pulses added 699 during a X -second window = Y - CALM[8:0] 700 with Y = 512, 256, 128 when X = 32, 16, 8 */ 701 #define RTC_SMOOTHCALIB_PLUSPULSES_RESET 0x00000000u /*!< The number of RTCCLK pulses subbstited 702 during a 32-second window = CALM[8:0] */ 703 /** 704 * @} 705 */ 706 707 /** @defgroup RTCEx_Calib_Output_selection_Definitions RTC Calib Output Selection Definitions 708 * @{ 709 */ 710 #define RTC_CALIBOUTPUT_512HZ 0x00000000u 711 #define RTC_CALIBOUTPUT_1HZ RTC_CR_COSEL 712 /** 713 * @} 714 */ 715 716 /** @defgroup RTCEx_Add_1_Second_Parameter_Definitions RTC Add 1 Second Parameter Definitions 717 * @{ 718 */ 719 #define RTC_SHIFTADD1S_RESET 0x00000000u 720 #define RTC_SHIFTADD1S_SET RTC_SHIFTR_ADD1S 721 /** 722 * @} 723 */ 724 725 /** 726 * @} 727 */ 728 729 /* Exported macros -----------------------------------------------------------*/ 730 731 /** @defgroup RTCEx_Exported_Macros RTC Exported Macros 732 * @{ 733 */ 734 735 /* ========================================================================== */ 736 /* ##### RTC Wake-up exported macros ##### */ 737 /* ========================================================================== */ 738 739 /** 740 * @brief Enable the RTC WakeUp Timer peripheral. 741 * @param __HANDLE__ specifies the RTC handle. 742 * @retval None 743 */ 744 #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE)) 745 746 /** 747 * @brief Disable the RTC WakeUp Timer peripheral. 748 * @param __HANDLE__ specifies the RTC handle. 749 * @retval None 750 */ 751 #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE)) 752 753 /** 754 * @brief Enable the RTC WakeUpTimer interrupt. 755 * @param __HANDLE__ specifies the RTC handle. 756 * @param __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled. 757 * This parameter can be: 758 * @arg @ref RTC_IT_WUT WakeUpTimer interrupt 759 * @retval None 760 */ 761 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__)) 762 763 /** 764 * @brief Disable the RTC WakeUpTimer interrupt. 765 * @param __HANDLE__ specifies the RTC handle. 766 * @param __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be disabled. 767 * This parameter can be: 768 * @arg @ref RTC_IT_WUT WakeUpTimer interrupt 769 * @retval None 770 */ 771 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__)) 772 773 /** 774 * @brief Check whether the specified RTC WakeUpTimer interrupt has occurred or not. 775 * @param __HANDLE__ specifies the RTC handle. 776 * @param __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to check. 777 * This parameter can be: 778 * @arg RTC_FLAG_WUTF WakeUpTimer interrupt flag 779 * @retval None 780 */ 781 #if defined(TAMP) 782 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->SR) & (__INTERRUPT__)) != 0U) ? 1U : 0U) 783 #else 784 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U) 785 #endif /* TAMP */ 786 787 /** 788 * @brief Check whether the specified RTC Wake Up timer interrupt has been enabled or not. 789 * @param __HANDLE__ specifies the RTC handle. 790 * @param __INTERRUPT__ specifies the RTC Wake Up timer interrupt sources to check. 791 * This parameter can be: 792 * @arg @ref RTC_IT_WUT WakeUpTimer interrupt 793 * @retval None 794 */ 795 #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U) 796 797 #if defined(TAMP) 798 /** 799 * @brief Get the selected RTC WakeUpTimer's flag status. 800 * @param __HANDLE__ specifies the RTC handle. 801 * @param __FLAG__ specifies the RTC WakeUpTimer Flag sources to check. 802 * This parameter can be: 803 * @arg @ref RTC_FLAG_WUTF 804 * @retval Flag status 805 */ 806 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->SR) & (__FLAG__)) != 0U) ? 1U : 0U) 807 #else 808 /** 809 * @brief Get the selected RTC WakeUpTimer's flag status. 810 * @param __HANDLE__ specifies the RTC handle. 811 * @param __FLAG__ specifies the RTC WakeUpTimer Flag sources to check. 812 * This parameter can be: 813 * @arg @ref RTC_FLAG_WUTF 814 * @arg @ref RTC_FLAG_WUTWF 815 * @retval Flag status 816 */ 817 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U) 818 #endif /* TAMP */ 819 820 /** 821 * @brief Clear the RTC Wake Up timer's pending flags. 822 * @param __HANDLE__ specifies the RTC handle. 823 * @param __FLAG__ specifies the RTC WakeUpTimer Flag to clear. 824 * This parameter can be: 825 * @arg @ref RTC_FLAG_WUTF 826 * @retval None 827 */ 828 #if defined(TAMP) 829 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SCR |= __FLAG__) 830 #else 831 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)) 832 #endif /* TAMP */ 833 834 /* ========================================================================== */ 835 /* ##### RTC Tamper exported macros ##### */ 836 /* ========================================================================== */ 837 838 /** 839 * @brief Enable the RTC Tamper1 input detection. 840 * @param __HANDLE__ specifies the RTC handle. 841 * @retval None 842 */ 843 #if defined(TAMP) 844 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP1E)) 845 #else 846 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP1E)) 847 #endif /* TAMP */ 848 849 /** 850 * @brief Disable the RTC Tamper1 input detection. 851 * @param __HANDLE__ specifies the RTC handle. 852 * @retval None 853 */ 854 #if defined(TAMP) 855 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP1E)) 856 #else 857 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP1E)) 858 #endif /* TAMP */ 859 860 /** 861 * @brief Enable the RTC Tamper2 input detection. 862 * @param __HANDLE__ specifies the RTC handle. 863 * @retval None 864 */ 865 #if defined(TAMP) 866 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP2E)) 867 #else 868 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP2E)) 869 #endif /* TAMP */ 870 871 /** 872 * @brief Disable the RTC Tamper2 input detection. 873 * @param __HANDLE__ specifies the RTC handle. 874 * @retval None 875 */ 876 #if defined(TAMP) 877 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + (TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP2E)) 878 #else 879 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP2E)) 880 #endif /* TAMP */ 881 882 /** 883 * @brief Enable the RTC Tamper3 input detection. 884 * @param __HANDLE__ specifies the RTC handle. 885 * @retval None 886 */ 887 #if defined(TAMP) 888 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 |= (TAMP_CR1_TAMP3E)) 889 #else 890 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP3E)) 891 #endif /* TAMP */ 892 893 /** 894 * @brief Disable the RTC Tamper3 input detection. 895 * @param __HANDLE__ specifies the RTC handle. 896 * @retval None 897 */ 898 #if defined(TAMP) 899 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->CR1 &= ~(RTC_TAMPCR_TAMP3E)) 900 #else 901 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP3E)) 902 #endif /* TAMP */ 903 904 /** 905 * @brief Enable the RTC Tamper interrupt. 906 * @param __HANDLE__ specifies the RTC handle. 907 * @param __INTERRUPT__ specifies the RTC Tamper interrupt sources to be enabled. 908 * This parameter can be any combination of the following values: 909 * @arg RTC_IT_TAMPALL: All tampers interrupts 910 * @arg RTC_IT_TAMP1: Tamper1 interrupt 911 * @arg RTC_IT_TAMP2: Tamper2 interrupt 912 * @arg RTC_IT_TAMP3: Tamper3 interrupt 913 * @retval None 914 */ 915 #if defined(TAMP) 916 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER |= (__INTERRUPT__)) 917 #else 918 #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->TAMPCR |= (__INTERRUPT__)) 919 #endif /* TAMP */ 920 921 /** 922 * @brief Disable the RTC Tamper interrupt. 923 * @param __HANDLE__ specifies the RTC handle. 924 * @param __INTERRUPT__ specifies the RTC Tamper interrupt sources to be disabled. 925 * This parameter can be any combination of the following values: 926 * @arg RTC_IT_TAMP: All tampers interrupts 927 * @arg RTC_IT_TAMP1: Tamper1 interrupt 928 * @arg RTC_IT_TAMP2: Tamper2 interrupt 929 * @arg RTC_IT_TAMP3: Tamper3 interrupt 930 * @retval None 931 */ 932 #if defined(TAMP) 933 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER &= ~(__INTERRUPT__)) 934 #else 935 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->TAMPCR &= ~(__INTERRUPT__)) 936 #endif /* TAMP */ 937 938 /** 939 * @brief Check whether the specified RTC Tamper interrupt has been enabled or not. 940 * @param __HANDLE__ specifies the RTC handle. 941 * @param __INTERRUPT__ specifies the RTC Tamper interrupt source to check. 942 * This parameter can be: 943 * @arg RTC_IT_TAMPALL: All tampers interrupts 944 * @arg RTC_IT_TAMP1: Tamper1 interrupt 945 * @arg RTC_IT_TAMP2: Tamper2 interrupt 946 * @arg RTC_IT_TAMP3: Tamper3 interrupt 947 * @retval Flag status 948 */ 949 #if defined(TAMP) 950 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->IER) & (__INTERRUPT__)) != 0U) ? 1U : 0U) 951 #else 952 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->TAMPCR) & (__INTERRUPT__)) != 0U) ? 1U : 0U) 953 #endif /* TAMP */ 954 955 /** 956 * @brief Get the selected RTC Tamper's flag status. 957 * @param __HANDLE__ specifies the RTC handle. 958 * @param __FLAG__ specifies the RTC Tamper Flag is pending or not. 959 * This parameter can be: 960 * @arg RTC_FLAG_TAMP1F: Tamper1 flag 961 * @arg RTC_FLAG_TAMP2F: Tamper2 flag 962 * @arg RTC_FLAG_TAMP3F: Tamper3 flag 963 * @retval Flag status 964 */ 965 #if defined(TAMP) 966 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__) ((((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->SR) & (__FLAG__)) != 0U) ? 1U : 0U) 967 #else 968 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U) 969 #endif /* TAMP */ 970 971 /** 972 * @brief Clear the RTC Tamper's pending flags. 973 * @param __HANDLE__ specifies the RTC handle. 974 * @param __FLAG__ specifies the RTC Tamper Flag to clear. 975 * This parameter can be: 976 * @arg RTC_FLAG_TAMP1F: Tamper1 flag 977 * @arg RTC_FLAG_TAMP2F: Tamper2 flag 978 * @arg RTC_FLAG_TAMP3F: Tamper3 flag 979 * @retval None 980 */ 981 #if defined(TAMP) 982 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->SCR) |= (__FLAG__)) 983 #else 984 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)) 985 #endif /* TAMP */ 986 987 /** 988 * @brief Get the frequency at which each of the Tamper inputs are sampled. 989 * @param __HANDLE__ specifies the RTC handle. 990 * @retval Sampling frequency 991 * This value can be: 992 * @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 993 * @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 994 * @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 995 * @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 996 * @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 997 * @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 998 * @arg RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 999 */ 1000 #if defined(TAMP) 1001 #define __HAL_RTC_TAMPER_GET_SAMPLING_FREQ(__HANDLE__) ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK))) 1002 #else 1003 #define __HAL_RTC_TAMPER_GET_SAMPLING_FREQ(__HANDLE__) ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK))) 1004 #endif /* TAMP */ 1005 1006 /** 1007 * @brief Get the number of consecutive samples at the specified level needed 1008 * to activate a Tamper event. 1009 * @param __HANDLE__ specifies the RTC handle. 1010 * @retval Number of consecutive samples 1011 * This value can be: 1012 * @arg RTC_TAMPERFILTER_DISABLE 1013 * @arg RTC_TAMPERFILTER_2SAMPLE 1014 * @arg RTC_TAMPERFILTER_4SAMPLE 1015 * @arg RTC_TAMPERFILTER_8SAMPLE 1016 */ 1017 #if defined(TAMP) 1018 #define __HAL_RTC_TAMPER_GET_SAMPLES_COUNT(__HANDLE__) ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERFILTER_MASK))) 1019 #else 1020 #define __HAL_RTC_TAMPER_GET_SAMPLES_COUNT(__HANDLE__) ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERFILTER_MASK))) 1021 #endif /* TAMP */ 1022 1023 /** 1024 * @brief Get the pull-up resistors precharge duration. 1025 * @param __HANDLE__ specifies the RTC handle. 1026 * @retval Number of consecutive samples 1027 * This value can be: 1028 * @arg RTC_TAMPERPRECHARGEDURATION_1RTCCLK 1029 * @arg RTC_TAMPERPRECHARGEDURATION_2RTCCLK 1030 * @arg RTC_TAMPERPRECHARGEDURATION_4RTCCLK 1031 * @arg RTC_TAMPERPRECHARGEDURATION_8RTCCLK 1032 */ 1033 #if defined(TAMP) 1034 #define __HAL_RTC_TAMPER_GET_PRCHRG_DURATION(__HANDLE__) ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPERPRECHARGEDURATION_MASK))) 1035 #else 1036 #define __HAL_RTC_TAMPER_GET_PRCHRG_DURATION(__HANDLE__) ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPERPRECHARGEDURATION_MASK))) 1037 #endif /* TAMP */ 1038 1039 /** 1040 * @brief Get the pull-up resistors status. 1041 * @param __HANDLE__ specifies the RTC handle. 1042 * @retval Pull-up resistors status 1043 * This value can be: 1044 * @arg RTC_TAMPER_PULLUP_ENABLE 1045 * @arg RTC_TAMPER_PULLUP_DISABLE 1046 */ 1047 #if defined(TAMP) 1048 #define __HAL_RTC_TAMPER_GET_PULLUP_STATUS(__HANDLE__) ((uint32_t)((((TAMP_TypeDef *)((uint32_t)((__HANDLE__)->Instance) + TAMP_OFFSET))->FLTCR) & (RTC_TAMPER_PULLUP_MASK))) 1049 #else 1050 #define __HAL_RTC_TAMPER_GET_PULLUP_STATUS(__HANDLE__) ((uint32_t)(((__HANDLE__)->Instance->TAMPCR) & (RTC_TAMPER_PULLUP_MASK))) 1051 #endif /* TAMP */ 1052 1053 /* ========================================================================== */ 1054 /* ##### RTC TimeStamp exported macros ##### */ 1055 /* ========================================================================== */ 1056 1057 /** 1058 * @brief Enable the RTC TimeStamp peripheral. 1059 * @param __HANDLE__ specifies the RTC handle. 1060 * @retval None 1061 */ 1062 #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE)) 1063 1064 /** 1065 * @brief Disable the RTC TimeStamp peripheral. 1066 * @param __HANDLE__ specifies the RTC handle. 1067 * @retval None 1068 */ 1069 #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE)) 1070 1071 /** 1072 * @brief Enable the RTC TimeStamp interrupt. 1073 * @param __HANDLE__ specifies the RTC handle. 1074 * @param __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be enabled. 1075 * This parameter can be: 1076 * @arg @ref RTC_IT_TS TimeStamp interrupt 1077 * @retval None 1078 */ 1079 #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__)) 1080 1081 /** 1082 * @brief Disable the RTC TimeStamp interrupt. 1083 * @param __HANDLE__ specifies the RTC handle. 1084 * @param __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be disabled. 1085 * This parameter can be: 1086 * @arg @ref RTC_IT_TS TimeStamp interrupt 1087 * @retval None 1088 */ 1089 #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__)) 1090 1091 /** 1092 * @brief Check whether the specified RTC TimeStamp interrupt has occurred or not. 1093 * @param __HANDLE__ specifies the RTC handle. 1094 * @param __INTERRUPT__ specifies the RTC TimeStamp interrupt source to check. 1095 * This parameter can be: 1096 * @arg @ref RTC_IT_TS TimeStamp interrupt 1097 * @retval None 1098 */ 1099 #if defined(TAMP) 1100 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->MISR) & ((__INTERRUPT__) >> 12)) != 0U) ? 1U : 0U) 1101 #else 1102 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & (__INTERRUPT__)) != 0U) ? 1U : 0U) 1103 #endif /* TAMP */ 1104 /** 1105 * @brief Check whether the specified RTC Time Stamp interrupt has been enabled or not. 1106 * @param __HANDLE__ specifies the RTC handle. 1107 * @param __INTERRUPT__ specifies the RTC Time Stamp interrupt source to check. 1108 * This parameter can be: 1109 * @arg @ref RTC_IT_TS TimeStamp interrupt 1110 * @retval None 1111 */ 1112 #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U) 1113 1114 /** 1115 * @brief Get the selected RTC TimeStamp's flag status. 1116 * @param __HANDLE__ specifies the RTC handle. 1117 * @param __FLAG__ specifies the RTC TimeStamp Flag is pending or not. 1118 * This parameter can be: 1119 * @arg RTC_FLAG_TSF 1120 * @arg RTC_FLAG_TSOVF 1121 * @retval Flag status 1122 */ 1123 #if defined(TAMP) 1124 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->SR) & (__FLAG__)) != 0U) ? 1U : 0U) 1125 #else 1126 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U) 1127 #endif /* TAMP */ 1128 1129 /** 1130 * @brief Clear the RTC Time Stamp's pending flags. 1131 * @param __HANDLE__ specifies the RTC handle. 1132 * @param __FLAG__ specifies the RTC Alarm Flag sources to clear. 1133 * This parameter can be: 1134 * @arg RTC_FLAG_TSF 1135 * @arg RTC_FLAG_TSOVF 1136 * @retval None 1137 */ 1138 #if defined(TAMP) 1139 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SCR |= __FLAG__) 1140 #else 1141 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))) 1142 #endif /* TAMP */ 1143 1144 /** 1145 * @brief Enable the RTC internal TimeStamp peripheral. 1146 * @param __HANDLE__ specifies the RTC handle. 1147 * @retval None 1148 */ 1149 #define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE)) 1150 1151 /** 1152 * @brief Disable the RTC internal TimeStamp peripheral. 1153 * @param __HANDLE__ specifies the RTC handle. 1154 * @retval None 1155 */ 1156 #define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE)) 1157 1158 /** 1159 * @brief Get the selected RTC Internal Time Stamp's flag status. 1160 * @param __HANDLE__ specifies the RTC handle. 1161 * @param __FLAG__ specifies the RTC Internal Time Stamp Flag is pending or not. 1162 * This parameter can be: 1163 * @arg RTC_FLAG_ITSF 1164 * @retval Flag status 1165 */ 1166 #if defined(TAMP) 1167 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->SR) & (__FLAG__)) != 0U) ? 1U : 0U) 1168 #else 1169 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U) 1170 #endif /* TAMP */ 1171 1172 /** 1173 * @brief Clear the RTC Internal Time Stamp's pending flags. 1174 * @param __HANDLE__ specifies the RTC handle. 1175 * @param __FLAG__ specifies the RTC Internal Time Stamp Flag source to clear. 1176 * This parameter can be: 1177 * @arg RTC_FLAG_ITSF 1178 * @note This flag must be cleared together with TSF flag. 1179 * @retval None 1180 */ 1181 #if defined(TAMP) 1182 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SCR |= __FLAG__) 1183 #else 1184 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))) 1185 #endif /* TAMP */ 1186 1187 /** 1188 * @brief Enable the RTC TimeStamp on Tamper detection. 1189 * @param __HANDLE__ specifies the RTC handle. 1190 * @retval None 1191 */ 1192 #if defined(TAMP) 1193 #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_TIMESTAMPONTAMPERDETECTION_MASK)) 1194 #else 1195 #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR |= (RTC_TIMESTAMPONTAMPERDETECTION_MASK)) 1196 #endif /* TAMP */ 1197 1198 /** 1199 * @brief Disable the RTC TimeStamp on Tamper detection. 1200 * @param __HANDLE__ specifies the RTC handle. 1201 * @retval None 1202 */ 1203 #if defined(TAMP) 1204 #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_TIMESTAMPONTAMPERDETECTION_MASK)) 1205 #else 1206 #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TIMESTAMPONTAMPERDETECTION_MASK)) 1207 #endif /* TAMP */ 1208 1209 /** 1210 * @brief Get activation status of the RTC TimeStamp on Tamper detection. 1211 * @param __HANDLE__ specifies the RTC handle. 1212 * @retval Activation status of TimeStamp on Tamper detection 1213 * This value can be: 1214 * @arg RTC_TIMESTAMPONTAMPERDETECTION_ENABLE 1215 * @arg RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 1216 */ 1217 #if defined(TAMP) 1218 #define __HAL_RTC_TAMPTS_GET_STATUS(__HANDLE__) ((__HANDLE__)->Instance->CR &= RTC_TIMESTAMPONTAMPERDETECTION_MASK) 1219 #else 1220 #define __HAL_RTC_TAMPTS_GET_STATUS(__HANDLE__) ((__HANDLE__)->Instance->TAMPCR &= RTC_TIMESTAMPONTAMPERDETECTION_MASK) 1221 #endif /* TAMP */ 1222 1223 #if defined(TAMP) 1224 /** 1225 * @brief Enable the RTC Tamper detection output. 1226 * @param __HANDLE__ specifies the RTC handle. 1227 * @retval None 1228 */ 1229 #define __HAL_RTC_TAMPOE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TAMPOE)) 1230 1231 /** 1232 * @brief Disable the RTC Tamper detection output. 1233 * @param __HANDLE__ specifies the RTC handle. 1234 * @retval None 1235 */ 1236 #define __HAL_RTC_TAMPOE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TAMPOE)) 1237 #endif /* TAMP */ 1238 1239 /* ========================================================================== */ 1240 /* ##### Extended RTC Peripheral Control exported macros ##### */ 1241 /* ========================================================================== */ 1242 1243 /** 1244 * @brief Enable the RTC calibration output. 1245 * @param __HANDLE__ specifies the RTC handle. 1246 * @retval None 1247 */ 1248 #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_COE)) 1249 1250 /** 1251 * @brief Disable the calibration output. 1252 * @param __HANDLE__ specifies the RTC handle. 1253 * @retval None 1254 */ 1255 #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE)) 1256 1257 /** 1258 * @brief Enable the clock reference detection. 1259 * @param __HANDLE__ specifies the RTC handle. 1260 * @retval None 1261 */ 1262 #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON)) 1263 1264 /** 1265 * @brief Disable the clock reference detection. 1266 * @param __HANDLE__ specifies the RTC handle. 1267 * @retval None 1268 */ 1269 #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON)) 1270 1271 /** 1272 * @brief Get the selected RTC shift operation's flag status. 1273 * @param __HANDLE__ specifies the RTC handle. 1274 * @param __FLAG__ specifies the RTC shift operation Flag is pending or not. 1275 * This parameter can be: 1276 * @arg RTC_FLAG_SHPF 1277 * @retval Flag status 1278 */ 1279 #if defined(TAMP) 1280 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ICSR) & (__FLAG__)) != 0U) ? 1U : 0U) 1281 #else 1282 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U) 1283 #endif /* TAMP */ 1284 1285 /* ========================================================================== */ 1286 /* ##### RTC Wake-up Interrupt exported macros ##### */ 1287 /* ========================================================================== */ 1288 1289 /** 1290 * @brief Enable interrupt on the RTC WakeUp Timer associated Exti line. 1291 * @retval None 1292 */ 1293 #if defined(EXTI_D1) 1294 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() (EXTI_D1->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1295 #else /* EXTI */ 1296 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1297 #endif /* EXTI_D1 */ 1298 /** 1299 * @brief Disable interrupt on the RTC WakeUp Timer associated Exti line. 1300 * @retval None 1301 */ 1302 #if defined(EXTI_D1) 1303 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() (EXTI_D1->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1304 #else /* EXTI */ 1305 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1306 #endif /* EXTI_D1 */ 1307 1308 /** 1309 * @brief Enable event on the RTC WakeUp Timer associated Exti line. 1310 * @retval None 1311 */ 1312 #if defined(EXTI_D1) 1313 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT() (EXTI_D1->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1314 #else /* EXTI */ 1315 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1316 #endif /* EXTI_D1 */ 1317 1318 /** 1319 * @brief Disable event on the RTC WakeUp Timer associated Exti line. 1320 * @retval None 1321 */ 1322 #if defined(EXTI_D1) 1323 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT() (EXTI_D1->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1324 #else /* EXTI */ 1325 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1326 #endif /* EXTI_D1 */ 1327 1328 /** 1329 * @brief Enable event on the RTC WakeUp Timer associated D3 Exti line. 1330 * @retval None 1331 */ 1332 #define __HAL_RTC_WAKEUPTIMER_EXTID3_ENABLE_EVENT() (EXTI->D3PMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1333 1334 /** 1335 * @brief Disable event on the RTC WakeUp Timer associated D3 Exti line. 1336 * @retval None 1337 */ 1338 #define __HAL_RTC_WAKEUPTIMER_EXTID3_DISABLE_EVENT() (EXTI->D3PMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1339 1340 #if defined(DUAL_CORE) 1341 /** 1342 * @brief Enable interrupt on the RTC WakeUp Timer associated D2 Exti line. 1343 * @retval None 1344 */ 1345 #define __HAL_RTC_WAKEUPTIMER_EXTID2_ENABLE_IT() (EXTI_D2->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1346 1347 /** 1348 * @brief Disable interrupt on the RTC WakeUp Timer associated D2 Exti line. 1349 * @retval None 1350 */ 1351 #define __HAL_RTC_WAKEUPTIMER_EXTID2_DISABLE_IT() (EXTI_D2->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1352 1353 /** 1354 * @brief Enable event on the RTC WakeUp Timer associated D2 Exti line. 1355 * @retval None 1356 */ 1357 #define __HAL_RTC_WAKEUPTIMER_EXTID2_ENABLE_EVENT() (EXTI_D2->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1358 1359 /** 1360 * @brief Disable event on the RTC WakeUp Timer associated D2 Exti line. 1361 * @retval None 1362 */ 1363 #define __HAL_RTC_WAKEUPTIMER_EXTID2_DISABLE_EVENT() (EXTI_D2->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1364 1365 #endif /* DUAL_CORE */ 1366 1367 /** 1368 * @brief Enable falling edge trigger on the RTC WakeUp Timer associated Exti line. 1369 * @retval None 1370 */ 1371 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1372 1373 /** 1374 * @brief Disable falling edge trigger on the RTC WakeUp Timer associated Exti line. 1375 * @retval None 1376 */ 1377 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1378 1379 /** 1380 * @brief Enable rising edge trigger on the RTC WakeUp Timer associated Exti line. 1381 * @retval None 1382 */ 1383 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1384 1385 /** 1386 * @brief Disable rising edge trigger on the RTC WakeUp Timer associated Exti line. 1387 * @retval None 1388 */ 1389 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT)) 1390 1391 /** 1392 * @brief Enable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line. 1393 * @retval None 1394 */ 1395 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() do { \ 1396 __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE(); \ 1397 __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE(); \ 1398 } while(0) 1399 1400 /** 1401 * @brief Disable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line. 1402 * This parameter can be: 1403 * @retval None 1404 */ 1405 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() do { \ 1406 __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE(); \ 1407 __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE(); \ 1408 } while(0) 1409 1410 /** 1411 * @brief Check whether the RTC WakeUp Timer associated Exti line interrupt flag is set or not. 1412 * @retval Line Status. 1413 */ 1414 #if defined(EXTI_D1) 1415 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() (EXTI_D1->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1416 #else /* EXTI */ 1417 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() (EXTI->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1418 #endif /* EXTI_D1 */ 1419 1420 /** 1421 * @brief Clear the RTC WakeUp Timer associated Exti line flag. 1422 * @retval None 1423 */ 1424 #if defined(EXTI_D1) 1425 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() (EXTI_D1->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1426 #else /* EXTI */ 1427 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() (EXTI->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1428 #endif /* EXTI_D1 */ 1429 1430 /** 1431 * @brief Check whether the RTC WakeUp Timer associated D3 Exti line interrupt flag is set or not. 1432 * @retval Line Status 1433 */ 1434 #define __HAL_RTC_WAKEUPTIMER_EXTID3_GET_FLAG() (EXTI_D3->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1435 1436 /** 1437 * @brief Clear the RTC WakeUp Timer associated D3 Exti line flag. 1438 * @retval None. 1439 */ 1440 #define __HAL_RTC_WAKEUPTIMER_EXTID3_CLEAR_FLAG() (EXTI_D3->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1441 1442 /** 1443 * @brief Generate a Software interrupt on the RTC WakeUp Timer associated Exti line. 1444 * @retval None. 1445 */ 1446 #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() (EXTI->SWIER1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1447 1448 #if defined(DUAL_CORE) 1449 1450 /** 1451 * @brief Check whether the RTC WakeUp Timer associated D2 Exti line interrupt flag is set or not. 1452 * @retval Line Status. 1453 */ 1454 #define __HAL_RTC_WAKEUPTIMER_EXTID2_GET_FLAG() (EXTI_D2->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1455 1456 /** 1457 * @brief Clear the RTC WakeUp Timer associated D2 Exti line flag. 1458 * @retval None. 1459 */ 1460 #define __HAL_RTC_WAKEUPTIMER_EXTID2_CLEAR_FLAG() (EXTI_D2->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1461 1462 #endif /* DUAL_CORE */ 1463 1464 /* ========================================================================== */ 1465 /* ##### RTC TimeStamp and Tamper Interrupt exported macros ##### */ 1466 /* ========================================================================== */ 1467 1468 /** 1469 * @brief Enable interrupt on the RTC Tamper and Timestamp associated Exti line. 1470 * @retval None 1471 */ 1472 #if defined(EXTI_D1) 1473 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT() (EXTI_D1->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1474 #else /* EXTI */ 1475 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1476 #endif /* EXTI_D1 */ 1477 1478 /** 1479 * @brief Disable interrupt on the RTC Tamper and Timestamp associated Exti line. 1480 * @retval None 1481 */ 1482 #if defined(EXTI_D1) 1483 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT() (EXTI_D1->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1484 #else /* EXTI */ 1485 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1486 #endif /* EXTI_D1 */ 1487 1488 /** 1489 * @brief Enable event on the RTC Tamper and Timestamp associated Exti line. 1490 * @retval None 1491 */ 1492 #if defined(EXTI_D1) 1493 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT() (EXTI_D1->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1494 #else /* EXTI */ 1495 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1496 #endif /* EXTI_D1 */ 1497 1498 /** 1499 * @brief Disable event on the RTC Tamper and Timestamp associated Exti line. 1500 * @retval None 1501 */ 1502 #if defined(EXTI_D1) 1503 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT() (EXTI_D1->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1504 #else /* EXTI */ 1505 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1506 #endif /* EXTI_D1 */ 1507 1508 #if defined(DUAL_CORE) 1509 /** 1510 * @brief Enable interrupt on the RTC Tamper and Timestamp associated D2 Exti line. 1511 * @retval None 1512 */ 1513 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_ENABLE_IT() (EXTI_D2->IMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1514 1515 /** 1516 * @brief Disable interrupt on the RTC Tamper and Timestamp associated D2 Exti line. 1517 * @retval None 1518 */ 1519 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_DISABLE_IT() (EXTI_D2->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1520 1521 1522 /** 1523 * @brief Enable event on the RTC Tamper and Timestamp associated D2 Exti line. 1524 * @retval None 1525 */ 1526 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_ENABLE_EVENT() (EXTI_D2->EMR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1527 1528 1529 /** 1530 * @brief Disable event on the RTC Tamper and Timestamp associated D2 Exti line. 1531 * @retval None 1532 */ 1533 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_DISABLE_EVENT() (EXTI_D2->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1534 1535 #endif /* DUAL_CORE */ 1536 1537 /** 1538 * @brief Enable falling edge trigger on the RTC Tamper and Timestamp associated Exti line. 1539 * @retval None 1540 */ 1541 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1542 1543 /** 1544 * @brief Disable falling edge trigger on the RTC Tamper and Timestamp associated Exti line. 1545 * @retval None 1546 */ 1547 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1548 1549 /** 1550 * @brief Enable rising edge trigger on the RTC Tamper and Timestamp associated Exti line. 1551 * @retval None 1552 */ 1553 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1554 1555 /** 1556 * @brief Disable rising edge trigger on the RTC Tamper and Timestamp associated Exti line. 1557 * @retval None 1558 */ 1559 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR1 &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)) 1560 1561 /** 1562 * @brief Enable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line. 1563 * @retval None 1564 */ 1565 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() do { \ 1566 __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE(); \ 1567 __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); \ 1568 } while(0) 1569 1570 /** 1571 * @brief Disable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line. 1572 * @retval None 1573 */ 1574 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() do { \ 1575 __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE(); \ 1576 __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE(); \ 1577 } while(0) 1578 1579 /** 1580 * @brief Check whether the RTC Tamper and Timestamp associated Exti line interrupt flag is set or not. 1581 * @retval Line Status 1582 */ 1583 #if defined(EXTI_D1) 1584 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() (EXTI_D1->PR1 & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1585 #else /* EXTI */ 1586 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() (EXTI->PR1 & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1587 #endif /* EXTI_D1 */ 1588 1589 /** 1590 * @brief Clear the RTC Tamper and Timestamp associated Exti line flag. 1591 * @retval None 1592 */ 1593 #if defined(EXTI_D1) 1594 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG() (EXTI_D1->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1595 #else /* EXTI */ 1596 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG() (EXTI->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1597 #endif /* EXTI_D1 */ 1598 1599 #if defined(DUAL_CORE) 1600 /** 1601 * @brief Check whether the RTC Tamper and Timestamp associated D2 Exti line interrupt flag is set or not. 1602 * @retval Line Status 1603 */ 1604 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_GET_FLAG() (EXTI_D2->PR1 & RTC_EXTI_LINE_WAKEUPTIMER_EVENT) 1605 1606 /** 1607 * @brief Clear the RTC Tamper and Timestamp associated D2 Exti line flag. 1608 * @retval None 1609 */ 1610 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTID2_CLEAR_FLAG() (EXTI_D2->PR1 = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1611 1612 #endif /* DUAL_CORE */ 1613 1614 /** 1615 * @brief Generate a Software interrupt on the RTC Tamper and Timestamp associated Exti line 1616 * @retval None 1617 */ 1618 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT() (EXTI->SWIER1 |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT) 1619 1620 /** 1621 * @} 1622 */ 1623 1624 /* Exported functions --------------------------------------------------------*/ 1625 1626 /** @defgroup RTCEx_Exported_Functions RTC Exported Functions 1627 * @{ 1628 */ 1629 1630 /* ========================================================================== */ 1631 /* ##### RTC TimeStamp exported functions ##### */ 1632 /* ========================================================================== */ 1633 1634 /* RTC TimeStamp functions ****************************************************/ 1635 1636 /** @defgroup RTCEx_Exported_Functions_Group1 Extended RTC TimeStamp functions 1637 * @{ 1638 */ 1639 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin); 1640 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin); 1641 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc); 1642 HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc); 1643 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTimeStamp(RTC_HandleTypeDef *hrtc); 1644 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format); 1645 void HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc); 1646 void HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc); 1647 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout); 1648 /** 1649 * @} 1650 */ 1651 1652 /* ========================================================================== */ 1653 /* ##### RTC Tamper exported functions ##### */ 1654 /* ========================================================================== */ 1655 1656 /* RTC Tamper functions *******************************************************/ 1657 1658 /** @defgroup RTCEx_Exported_Functions_Group5 Extended RTC Tamper functions 1659 * @{ 1660 */ 1661 HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, const RTC_TamperTypeDef *sTamper); 1662 HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, const RTC_TamperTypeDef *sTamper); 1663 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper); 1664 HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout); 1665 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout); 1666 HAL_StatusTypeDef HAL_RTCEx_PollForTamper3Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout); 1667 void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc); 1668 void HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc); 1669 void HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc); 1670 #if defined(TAMP) 1671 HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper(RTC_HandleTypeDef *hrtc, const RTC_InternalTamperTypeDef *sIntTamper); 1672 HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper_IT(RTC_HandleTypeDef *hrtc, const RTC_InternalTamperTypeDef *sIntTamper); 1673 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTamper(RTC_HandleTypeDef *hrtc, uint32_t IntTamper); 1674 HAL_StatusTypeDef HAL_RTCEx_PollForInternalTamperEvent(RTC_HandleTypeDef *hrtc, uint32_t IntTamper, uint32_t Timeout); 1675 void HAL_RTCEx_InternalTamper1EventCallback(RTC_HandleTypeDef *hrtc); 1676 void HAL_RTCEx_InternalTamper2EventCallback(RTC_HandleTypeDef *hrtc); 1677 void HAL_RTCEx_InternalTamper3EventCallback(RTC_HandleTypeDef *hrtc); 1678 void HAL_RTCEx_InternalTamper4EventCallback(RTC_HandleTypeDef *hrtc); 1679 void HAL_RTCEx_InternalTamper5EventCallback(RTC_HandleTypeDef *hrtc); 1680 void HAL_RTCEx_InternalTamper6EventCallback(RTC_HandleTypeDef *hrtc); 1681 void HAL_RTCEx_InternalTamper8EventCallback(RTC_HandleTypeDef *hrtc); 1682 HAL_StatusTypeDef HAL_RTCEx_SetActiveTampers(RTC_HandleTypeDef *hrtc, const RTC_ActiveTampersTypeDef *sAllTamper); 1683 HAL_StatusTypeDef HAL_RTCEx_SetActiveSeed(RTC_HandleTypeDef *hrtc, const uint32_t *pSeed); 1684 HAL_StatusTypeDef HAL_RTCEx_DeactivateActiveTampers(RTC_HandleTypeDef *hrtc); 1685 #endif /* TAMP */ 1686 1687 /** 1688 * @} 1689 */ 1690 1691 /* ========================================================================== */ 1692 /* ##### RTC Wake-up exported functions ##### */ 1693 /* ========================================================================== */ 1694 1695 /* RTC Wake-up functions ******************************************************/ 1696 1697 /** @defgroup RTCEx_Exported_Functions_Group2 Extended RTC Wake-up functions 1698 * @{ 1699 */ 1700 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock); 1701 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock); 1702 HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc); 1703 uint32_t HAL_RTCEx_GetWakeUpTimer(const RTC_HandleTypeDef *hrtc); 1704 void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc); 1705 void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc); 1706 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout); 1707 /** 1708 * @} 1709 */ 1710 1711 /* ========================================================================== */ 1712 /* ##### Extended RTC Backup registers exported functions ##### */ 1713 /* ========================================================================== */ 1714 1715 /* Extended RTC Backup registers functions ************************************/ 1716 1717 /** @defgroup RTCEx_Exported_Functions_Group6 Extended RTC Backup register functions 1718 * @{ 1719 */ 1720 void HAL_RTCEx_BKUPWrite(const RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data); 1721 uint32_t HAL_RTCEx_BKUPRead(const RTC_HandleTypeDef *hrtc, uint32_t BackupRegister); 1722 /** 1723 * @} 1724 */ 1725 1726 /* ========================================================================== */ 1727 /* ##### Extended RTC Peripheral Control exported functions ##### */ 1728 /* ========================================================================== */ 1729 1730 /* Extended RTC Peripheral Control functions **********************************/ 1731 1732 /** @defgroup RTCEx_Exported_Functions_Group3 Extended Peripheral Control functions 1733 * @{ 1734 */ 1735 HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue); 1736 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS); 1737 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput); 1738 HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc); 1739 HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc); 1740 HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc); 1741 HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc); 1742 HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc); 1743 #if defined(TAMP) 1744 HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterIncrement(RTC_HandleTypeDef *hrtc, uint32_t Instance); 1745 HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterGet(const RTC_HandleTypeDef *hrtc, uint32_t *Counter, uint32_t Instance); 1746 #endif /* TAMP */ 1747 /** 1748 * @} 1749 */ 1750 1751 /* Extended RTC features functions *******************************************/ 1752 1753 /** @defgroup RTCEx_Exported_Functions_Group4 Extended features functions 1754 * @{ 1755 */ 1756 1757 void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc); 1758 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout); 1759 /** 1760 * @} 1761 */ 1762 1763 /** 1764 * @} 1765 */ 1766 1767 /* Private types -------------------------------------------------------------*/ 1768 /* Private variables ---------------------------------------------------------*/ 1769 /* Private constants ---------------------------------------------------------*/ 1770 /** @defgroup RTCEx_Private_Constants RTC Private Constants 1771 * @{ 1772 */ 1773 #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT EXTI_IMR1_IM18 /*!< External interrupt line 18 Connected to the RTC Tamper and Time Stamp events */ 1774 #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT EXTI_IMR1_IM19 /*!< External interrupt line 19 Connected to the RTC Wakeup event */ 1775 1776 /* Masks Definition */ 1777 #define RTC_TAMPER_X ((uint32_t) (RTC_TAMPER_1 | RTC_TAMPER_2 | RTC_TAMPER_3)) 1778 #define RTC_TAMPER_X_INTERRUPT ((uint32_t) (RTC_IT_TAMP1 | RTC_IT_TAMP2 | RTC_IT_TAMP3)) 1779 1780 /** 1781 * @} 1782 */ 1783 1784 /* Private macros ------------------------------------------------------------*/ 1785 /** @defgroup RTCEx_Private_Macros RTC Private Macros 1786 * @{ 1787 */ 1788 1789 /** @defgroup RTCEx_IS_RTC_Definitions Private macros to check input parameters 1790 * @{ 1791 */ 1792 1793 /* ========================================================================== */ 1794 /* ##### Extended RTC Backup registers private macros ##### */ 1795 /* ========================================================================== */ 1796 1797 #define IS_RTC_BKP(__BKP__) ((__BKP__) < BKP_REG_NUMBER) 1798 1799 /* ========================================================================== */ 1800 /* ##### RTC TimeStamp private macros ##### */ 1801 /* ========================================================================== */ 1802 1803 #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \ 1804 ((EDGE) == RTC_TIMESTAMPEDGE_FALLING)) 1805 1806 #define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT)) 1807 1808 /* ========================================================================== */ 1809 /* ##### RTC Wake-up private macros ##### */ 1810 /* ========================================================================== */ 1811 1812 #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16) || \ 1813 ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8) || \ 1814 ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4) || \ 1815 ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2) || \ 1816 ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \ 1817 ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS)) 1818 1819 #define IS_RTC_WAKEUP_COUNTER(COUNTER) ((COUNTER) <= RTC_WUTR_WUT) 1820 1821 /* ========================================================================== */ 1822 /* ##### RTC Smooth Calibration private macros ##### */ 1823 /* ========================================================================== */ 1824 1825 #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \ 1826 ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \ 1827 ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC)) 1828 1829 #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \ 1830 ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET)) 1831 1832 #define IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= RTC_CALR_CALM) 1833 1834 /* ========================================================================== */ 1835 /* ##### Extended RTC Peripheral Control private macros ##### */ 1836 /* ========================================================================== */ 1837 1838 #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \ 1839 ((SEL) == RTC_SHIFTADD1S_SET)) 1840 1841 #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= RTC_SHIFTR_SUBFS) 1842 1843 #define IS_RTC_CALIB_OUTPUT(OUTPUT) (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \ 1844 ((OUTPUT) == RTC_CALIBOUTPUT_1HZ)) 1845 1846 /* ========================================================================== */ 1847 /* ##### RTC Tamper private macros ##### */ 1848 /* ========================================================================== */ 1849 1850 #define IS_RTC_TAMPER(__TAMPER__) ((((__TAMPER__) & RTC_TAMPER_X) != 0x00U) && \ 1851 (((__TAMPER__) & ~RTC_TAMPER_X) == 0x00U)) 1852 1853 #define IS_RTC_TAMPER_INTERRUPT(__INTERRUPT__) \ 1854 ((((__INTERRUPT__) & ( RTC_TAMPER_X_INTERRUPT | RTC_IT_TAMPALL )) != 0x00U) && \ 1855 (((__INTERRUPT__) & (~(RTC_TAMPER_X_INTERRUPT | RTC_IT_TAMPALL))) == 0x00U)) 1856 1857 #define IS_RTC_TAMPER_TRIGGER(__TRIGGER__) (((__TRIGGER__) == RTC_TAMPERTRIGGER_RISINGEDGE) || \ 1858 ((__TRIGGER__) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \ 1859 ((__TRIGGER__) == RTC_TAMPERTRIGGER_LOWLEVEL) || \ 1860 ((__TRIGGER__) == RTC_TAMPERTRIGGER_HIGHLEVEL)) 1861 1862 #define IS_RTC_TAMPER_ERASE_MODE(__MODE__) (((__MODE__) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \ 1863 ((__MODE__) == RTC_TAMPER_ERASE_BACKUP_DISABLE)) 1864 1865 #define IS_RTC_TAMPER_MASKFLAG_STATE(__STATE__) (((__STATE__) == RTC_TAMPERMASK_FLAG_ENABLE) || \ 1866 ((__STATE__) == RTC_TAMPERMASK_FLAG_DISABLE)) 1867 1868 #define IS_RTC_TAMPER_FILTER(__FILTER__) (((__FILTER__) == RTC_TAMPERFILTER_DISABLE) || \ 1869 ((__FILTER__) == RTC_TAMPERFILTER_2SAMPLE) || \ 1870 ((__FILTER__) == RTC_TAMPERFILTER_4SAMPLE) || \ 1871 ((__FILTER__) == RTC_TAMPERFILTER_8SAMPLE)) 1872 1873 #define IS_RTC_TAMPER_SAMPLING_FREQ(__FREQ__) (((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \ 1874 ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \ 1875 ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \ 1876 ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \ 1877 ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \ 1878 ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \ 1879 ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512) || \ 1880 ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256)) 1881 1882 #define IS_RTC_TAMPER_PRECHARGE_DURATION(__DURATION__) (((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \ 1883 ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \ 1884 ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \ 1885 ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK)) 1886 1887 #define IS_RTC_TAMPER_PULLUP_STATE(__STATE__) (((__STATE__) == RTC_TAMPER_PULLUP_ENABLE) || \ 1888 ((__STATE__) == RTC_TAMPER_PULLUP_DISABLE)) 1889 1890 #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(__DETECTION__) (((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \ 1891 ((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE)) 1892 1893 #if defined(TAMP) 1894 #define IS_RTC_TAMPER_TAMPERDETECTIONOUTPUT(__MODE__) (((__MODE__) == RTC_TAMPERDETECTIONOUTPUT_ENABLE) || \ 1895 ((__MODE__) == RTC_TAMPERDETECTIONOUTPUT_DISABLE)) 1896 #endif /* TAMP */ 1897 1898 #define IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(FILTER, TRIGGER) \ 1899 ( ( ((FILTER) != RTC_TAMPERFILTER_DISABLE) \ 1900 && ( ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL) \ 1901 || ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))) \ 1902 || ( ((FILTER) == RTC_TAMPERFILTER_DISABLE) \ 1903 && ( ((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE) \ 1904 || ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE)))) 1905 1906 #define IS_RTC_INTERNAL_TAMPER(__INT_TAMPER__) ((((__INT_TAMPER__) & RTC_INT_TAMPER_ALL) != 0x00U) && \ 1907 (((__INT_TAMPER__) & ~RTC_INT_TAMPER_ALL) == 0x00U)) 1908 1909 /** 1910 * @} 1911 */ 1912 1913 /** 1914 * @} 1915 */ 1916 1917 /** 1918 * @} 1919 */ 1920 1921 /** 1922 * @} 1923 */ 1924 1925 #ifdef __cplusplus 1926 } 1927 #endif /* __cplusplus */ 1928 1929 #endif /* STM32H7xx_HAL_RTC_EX_H */ 1930 1931