You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2090 lines
94 KiB

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