stm32g4xx_hal_rtc_ex.h 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383
  1. /**
  2. ******************************************************************************
  3. * @file stm32g4xx_hal_rtc_ex.h
  4. * @author MCD Application Team
  5. * @brief Header file of RTC HAL Extended module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2019 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. */
  18. /* Define to prevent recursive inclusion -------------------------------------*/
  19. #ifndef STM32G4xx_HAL_RTC_EX_H
  20. #define STM32G4xx_HAL_RTC_EX_H
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "stm32g4xx_hal_def.h"
  26. /** @addtogroup STM32G4xx_HAL_Driver
  27. * @{
  28. */
  29. /** @defgroup RTCEx RTCEx
  30. * @{
  31. */
  32. /* Exported types ------------------------------------------------------------*/
  33. /** @defgroup RTCEx_Exported_Types RTCEx Exported Types
  34. * @{
  35. */
  36. /** @defgroup RTCEx_Tamper_structure_definition RTCEx Tamper structure definition
  37. * @{
  38. */
  39. typedef struct
  40. {
  41. uint32_t Tamper; /*!< Specifies the Tamper Pin.
  42. This parameter can be a value of @ref RTCEx_Tamper_Pins */
  43. uint32_t Trigger; /*!< Specifies the Tamper Trigger.
  44. This parameter can be a value of @ref RTCEx_Tamper_Trigger */
  45. uint32_t NoErase; /*!< Specifies the Tamper no erase mode.
  46. This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp */
  47. uint32_t MaskFlag; /*!< Specifies the Tamper Flag masking.
  48. This parameter can be a value of @ref RTCEx_Tamper_MaskFlag */
  49. uint32_t Filter; /*!< Specifies the TAMP Filter Tamper.
  50. This parameter can be a value of @ref RTCEx_Tamper_Filter */
  51. uint32_t SamplingFrequency; /*!< Specifies the sampling frequency.
  52. This parameter can be a value of @ref RTCEx_Tamper_Sampling_Frequencies */
  53. uint32_t PrechargeDuration; /*!< Specifies the Precharge Duration .
  54. This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration */
  55. uint32_t TamperPullUp; /*!< Specifies the Tamper PullUp .
  56. This parameter can be a value of @ref RTCEx_Tamper_Pull_UP */
  57. uint32_t TimeStampOnTamperDetection; /*!< Specifies the TimeStampOnTamperDetection.
  58. This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection */
  59. } RTC_TamperTypeDef;
  60. /**
  61. * @}
  62. */
  63. /** @defgroup RTCEx_Internal_Tamper_structure_definition RTCEx Internal Tamper structure definition
  64. * @{
  65. */
  66. typedef struct
  67. {
  68. uint32_t IntTamper; /*!< Specifies the Internal Tamper Pin.
  69. This parameter can be a value of @ref RTCEx_Internal_Tamper_Pins */
  70. uint32_t TimeStampOnTamperDetection; /*!< Specifies the TimeStampOnTamperDetection.
  71. This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection */
  72. } RTC_InternalTamperTypeDef;
  73. /**
  74. * @}
  75. */
  76. /**
  77. * @}
  78. */
  79. /* Exported constants --------------------------------------------------------*/
  80. /** @defgroup RTCEx_Exported_Constants RTCEx Exported Constants
  81. * @{
  82. */
  83. /** @defgroup RTCEx_Time_Stamp_Edges_definitions RTCEx Time Stamp Edges definition
  84. * @{
  85. */
  86. #define RTC_TIMESTAMPEDGE_RISING 0x00000000U
  87. #define RTC_TIMESTAMPEDGE_FALLING RTC_CR_TSEDGE
  88. /**
  89. * @}
  90. */
  91. /** @defgroup RTCEx_TimeStamp_Pin_Selections RTCEx TimeStamp Pin Selection
  92. * @{
  93. */
  94. #define RTC_TIMESTAMPPIN_DEFAULT 0x00000000U
  95. /**
  96. * @}
  97. */
  98. /** @defgroup RTCEx_Wakeup_Timer_Definitions RTCEx Wakeup Timer Definitions
  99. * @{
  100. */
  101. #define RTC_WAKEUPCLOCK_RTCCLK_DIV16 0x00000000U
  102. #define RTC_WAKEUPCLOCK_RTCCLK_DIV8 RTC_CR_WUCKSEL_0
  103. #define RTC_WAKEUPCLOCK_RTCCLK_DIV4 RTC_CR_WUCKSEL_1
  104. #define RTC_WAKEUPCLOCK_RTCCLK_DIV2 (RTC_CR_WUCKSEL_0 | RTC_CR_WUCKSEL_1)
  105. #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS RTC_CR_WUCKSEL_2
  106. #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS (RTC_CR_WUCKSEL_1 | RTC_CR_WUCKSEL_2)
  107. /**
  108. * @}
  109. */
  110. /** @defgroup RTCEx_Smooth_calib_period_Definitions RTCEx Smooth calib period Definitions
  111. * @{
  112. */
  113. #define RTC_SMOOTHCALIB_PERIOD_32SEC 0x00000000U /*!< If RTCCLK = 32768 Hz, Smooth calibration
  114. period is 32s, else 2exp20 RTCCLK pulses */
  115. #define RTC_SMOOTHCALIB_PERIOD_16SEC RTC_CALR_CALW16 /*!< If RTCCLK = 32768 Hz, Smooth calibration
  116. period is 16s, else 2exp19 RTCCLK pulses */
  117. #define RTC_SMOOTHCALIB_PERIOD_8SEC RTC_CALR_CALW8 /*!< If RTCCLK = 32768 Hz, Smooth calibration
  118. period is 8s, else 2exp18 RTCCLK pulses */
  119. /**
  120. * @}
  121. */
  122. /** @defgroup RTCEx_Smooth_calib_Plus_pulses_Definitions RTCEx Smooth calib Plus pulses Definitions
  123. * @{
  124. */
  125. #define RTC_SMOOTHCALIB_PLUSPULSES_SET RTC_CALR_CALP /*!< The number of RTCCLK pulses added
  126. during a X -second window = Y - CALM[8:0]
  127. with Y = 512, 256, 128 when X = 32, 16, 8 */
  128. #define RTC_SMOOTHCALIB_PLUSPULSES_RESET 0x00000000U /*!< The number of RTCCLK pulses subbstited
  129. during a 32-second window = CALM[8:0] */
  130. /**
  131. * @}
  132. */
  133. /** @defgroup RTCEx_Calib_Output_selection_Definitions RTCEx Calib Output selection Definitions
  134. * @{
  135. */
  136. #define RTC_CALIBOUTPUT_512HZ 0x00000000U
  137. #define RTC_CALIBOUTPUT_1HZ RTC_CR_COSEL
  138. /**
  139. * @}
  140. */
  141. /** @defgroup RTCEx_Add_1_Second_Parameter_Definition RTCEx Add 1 Second Parameter Definitions
  142. * @{
  143. */
  144. #define RTC_SHIFTADD1S_RESET 0x00000000U
  145. #define RTC_SHIFTADD1S_SET RTC_SHIFTR_ADD1S
  146. /**
  147. * @}
  148. */
  149. /** @defgroup RTCEx_Tamper_Pins RTCEx Tamper Pins Definition
  150. * @{
  151. */
  152. #define RTC_TAMPER_1 TAMP_CR1_TAMP1E
  153. #define RTC_TAMPER_2 TAMP_CR1_TAMP2E
  154. #if (RTC_TAMP_NB == 3)
  155. #define RTC_TAMPER_3 TAMP_CR1_TAMP3E
  156. #define RTC_TAMPER_ALL (RTC_TAMPER_1 | RTC_TAMPER_2 | RTC_TAMPER_3 )
  157. #elif (RTC_TAMP_NB == 8)
  158. #define RTC_TAMPER_3 TAMP_CR1_TAMP3E
  159. #define RTC_TAMPER_4 TAMP_CR1_TAMP4E
  160. #define RTC_TAMPER_5 TAMP_CR1_TAMP5E
  161. #define RTC_TAMPER_6 TAMP_CR1_TAMP6E
  162. #define RTC_TAMPER_7 TAMP_CR1_TAMP7E
  163. #define RTC_TAMPER_8 TAMP_CR1_TAMP8E
  164. #define RTC_TAMPER_ALL (RTC_TAMPER_1 | RTC_TAMPER_2 |\
  165. RTC_TAMPER_3 | RTC_TAMPER_4 |\
  166. RTC_TAMPER_5 | RTC_TAMPER_6 |\
  167. RTC_TAMPER_7 | RTC_TAMPER_8 )
  168. #else
  169. #define RTC_TAMPER_ALL (RTC_TAMPER_1 | RTC_TAMPER_2)
  170. #endif /* RTC_TAMP_NB */
  171. /**
  172. * @}
  173. */
  174. /** @defgroup RTCEx_Internal_Tamper_Pins RTCEx Internal Tamper Pins Definition
  175. * @{
  176. */
  177. #if defined (RTC_TAMP_INT_1_SUPPORT)
  178. #define RTC_INT_TAMPER_1 TAMP_CR1_ITAMP1E
  179. #else
  180. #define RTC_INT_TAMPER_1 0U
  181. #endif /* RTC_TAMP_INT_1_SUPPORT */
  182. #if defined (RTC_TAMP_INT_2_SUPPORT)
  183. #define RTC_INT_TAMPER_2 TAMP_CR1_ITAMP2E
  184. #else
  185. #define RTC_INT_TAMPER_2 0U
  186. #endif /* RTC_TAMP_INT_2_SUPPORT */
  187. #define RTC_INT_TAMPER_3 TAMP_CR1_ITAMP3E
  188. #define RTC_INT_TAMPER_4 TAMP_CR1_ITAMP4E
  189. #define RTC_INT_TAMPER_5 TAMP_CR1_ITAMP5E
  190. #if defined (RTC_TAMP_INT_6_SUPPORT)
  191. #define RTC_INT_TAMPER_6 TAMP_CR1_ITAMP6E
  192. #else
  193. #define RTC_INT_TAMPER_6 0U
  194. #endif /* RTC_TAMP_INT_6_SUPPORT */
  195. #if defined (RTC_TAMP_INT_7_SUPPORT)
  196. #define RTC_INT_TAMPER_7 TAMP_CR1_ITAMP7E
  197. #else
  198. #define RTC_INT_TAMPER_7 0U
  199. #endif /* RTC_TAMP_INT_7_SUPPORT */
  200. #if defined (RTC_TAMP_INT_8_SUPPORT)
  201. #define RTC_INT_TAMPER_8 TAMP_CR1_ITAMP8E
  202. #else
  203. #define RTC_INT_TAMPER_8 0U
  204. #endif /* RTC_TAMP_INT_8_SUPPORT */
  205. #define RTC_INT_TAMPER_ALL ( RTC_INT_TAMPER_1 | RTC_INT_TAMPER_2 |\
  206. RTC_INT_TAMPER_3 | RTC_INT_TAMPER_4 |\
  207. RTC_INT_TAMPER_5 | RTC_INT_TAMPER_6 |\
  208. RTC_INT_TAMPER_7 | RTC_INT_TAMPER_8 )
  209. /**
  210. * @}
  211. */
  212. /** @defgroup RTCEx_Tamper_Trigger RTCEx Tamper Trigger
  213. * @{
  214. */
  215. #define RTC_TAMPERTRIGGER_RISINGEDGE 0x00U /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */
  216. #define RTC_TAMPERTRIGGER_FALLINGEDGE 0x01U /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */
  217. #define RTC_TAMPERTRIGGER_LOWLEVEL 0x02U /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */
  218. #define RTC_TAMPERTRIGGER_HIGHLEVEL 0x03U /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */
  219. /**
  220. * @}
  221. */
  222. /** @defgroup RTCEx_Tamper_MaskFlag RTCEx Tamper MaskFlag
  223. * @{
  224. */
  225. #define RTC_TAMPERMASK_FLAG_DISABLE 0x00U
  226. #define RTC_TAMPERMASK_FLAG_ENABLE 0x01U
  227. /**
  228. * @}
  229. */
  230. /** @defgroup RTCEx_Tamper_EraseBackUp RTCEx Tamper EraseBackUp
  231. * @{
  232. */
  233. #define RTC_TAMPER_ERASE_BACKUP_ENABLE 0x00U
  234. #define RTC_TAMPER_ERASE_BACKUP_DISABLE 0x01U
  235. /**
  236. * @}
  237. */
  238. /** @defgroup RTCEx_Tamper_Filter RTCEx Tamper Filter
  239. * @{
  240. */
  241. #define RTC_TAMPERFILTER_DISABLE 0x00000000U /*!< Tamper filter is disabled */
  242. #define RTC_TAMPERFILTER_2SAMPLE TAMP_FLTCR_TAMPFLT_0 /*!< Tamper is activated after 2
  243. consecutive samples at the active level */
  244. #define RTC_TAMPERFILTER_4SAMPLE TAMP_FLTCR_TAMPFLT_1 /*!< Tamper is activated after 4
  245. consecutive samples at the active level */
  246. #define RTC_TAMPERFILTER_8SAMPLE TAMP_FLTCR_TAMPFLT /*!< Tamper is activated after 8
  247. consecutive samples at the active level */
  248. /**
  249. * @}
  250. */
  251. /** @defgroup RTCEx_Tamper_Sampling_Frequencies RTCEx Tamper Sampling Frequencies
  252. * @{
  253. */
  254. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768 0x00000000U /*!< Each of the tamper inputs are sampled
  255. with a frequency = RTCCLK / 32768 */
  256. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384 TAMP_FLTCR_TAMPFREQ_0 /*!< Each of the tamper inputs are sampled
  257. with a frequency = RTCCLK / 16384 */
  258. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192 TAMP_FLTCR_TAMPFREQ_1 /*!< Each of the tamper inputs are sampled
  259. with a frequency = RTCCLK / 8192 */
  260. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096 (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled
  261. with a frequency = RTCCLK / 4096 */
  262. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048 TAMP_FLTCR_TAMPFREQ_2 /*!< Each of the tamper inputs are sampled
  263. with a frequency = RTCCLK / 2048 */
  264. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024 (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
  265. with a frequency = RTCCLK / 1024 */
  266. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512 (TAMP_FLTCR_TAMPFREQ_1 | TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
  267. with a frequency = RTCCLK / 512 */
  268. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256 (TAMP_FLTCR_TAMPFREQ_0 | TAMP_FLTCR_TAMPFREQ_1 | \
  269. TAMP_FLTCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
  270. with a frequency = RTCCLK / 256 */
  271. /**
  272. * @}
  273. */
  274. /** @defgroup RTCEx_Tamper_Pin_Precharge_Duration RTCEx Tamper Pin Precharge Duration
  275. * @{
  276. */
  277. #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK 0x00000000U /*!< Tamper pins are pre-charged before
  278. sampling during 1 RTCCLK cycle */
  279. #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK TAMP_FLTCR_TAMPPRCH_0 /*!< Tamper pins are pre-charged before
  280. sampling during 2 RTCCLK cycles */
  281. #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK TAMP_FLTCR_TAMPPRCH_1 /*!< Tamper pins are pre-charged before
  282. sampling during 4 RTCCLK cycles */
  283. #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK (TAMP_FLTCR_TAMPPRCH_0 | TAMP_FLTCR_TAMPPRCH_1) /*!< Tamper pins are pre-charged before
  284. sampling during 8 RTCCLK cycles */
  285. /**
  286. * @}
  287. */
  288. /** @defgroup RTCEx_Tamper_Pull_UP RTCEx Tamper Pull UP
  289. * @{
  290. */
  291. #define RTC_TAMPER_PULLUP_ENABLE 0x00000000U /*!< Tamper pins are pre-charged before sampling */
  292. #define RTC_TAMPER_PULLUP_DISABLE TAMP_FLTCR_TAMPPUDIS /*!< Tamper pins pre-charge is disabled */
  293. /**
  294. * @}
  295. */
  296. /** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection RTCEx Tamper TimeStamp On Tamper Detection
  297. * @{
  298. */
  299. #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 0x00000000U /*!< TimeStamp on Tamper Detection event is not saved */
  300. #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE RTC_CR_TAMPTS /*!< TimeStamp on Tamper Detection event saved */
  301. /**
  302. * @}
  303. */
  304. /** @defgroup RTCEx_Internal_Tamper_Interrupt RTCEx Internal Tamper Interrupt
  305. * @{
  306. */
  307. #define RTC_IT_TAMP_1 TAMP_IER_TAMP1IE /*!< Tamper 1 Interrupt */
  308. #define RTC_IT_TAMP_2 TAMP_IER_TAMP2IE /*!< Tamper 2 Interrupt */
  309. #if (RTC_TAMP_NB == 3)
  310. #define RTC_IT_TAMP_3 TAMP_IER_TAMP3IE /*!< Tamper 3 Interrupt */
  311. #define RTC_IT_TAMP_ALL (RTC_IT_TAMP_1 | RTC_IT_TAMP_2 | RTC_IT_TAMP_3 )
  312. #elif (RTC_TAMP_NB == 8)
  313. #define RTC_IT_TAMP_3 TAMP_IER_TAMP3IE /*!< Tamper 3 Interrupt */
  314. #define RTC_IT_TAMP_4 TAMP_IER_TAMP4IE /*!< Tamper 4 Interrupt */
  315. #define RTC_IT_TAMP_5 TAMP_IER_TAMP5IE /*!< Tamper 5 Interrupt */
  316. #define RTC_IT_TAMP_6 TAMP_IER_TAMP6IE /*!< Tamper 6 Interrupt */
  317. #define RTC_IT_TAMP_7 TAMP_IER_TAMP7IE /*!< Tamper 7 Interrupt */
  318. #define RTC_IT_TAMP_8 TAMP_IER_TAMP8IE /*!< Tamper 8 Interrupt */
  319. #define RTC_IT_TAMP_ALL (RTC_IT_TAMP_1 | RTC_IT_TAMP_2 |\
  320. RTC_IT_TAMP_3 | RTC_IT_TAMP_4 |\
  321. RTC_IT_TAMP_5 | RTC_IT_TAMP_6 |\
  322. RTC_IT_TAMP_7 | RTC_IT_TAMP_8 )
  323. #else
  324. #define RTC_IT_TAMP_ALL (RTC_IT_TAMP_1 | RTC_IT_TAMP_2)
  325. #endif /* RTC_TAMP_NB */
  326. #if defined (RTC_TAMP_INT_1_SUPPORT)
  327. #define RTC_IT_INT_TAMP_1 TAMP_IER_ITAMP1IE /*!< Tamper 1 internal Interrupt */
  328. #else
  329. #define RTC_IT_INT_TAMP_1 0U
  330. #endif /* RTC_TAMP_INT_1_SUPPORT */
  331. #if defined (RTC_TAMP_INT_2_SUPPORT)
  332. #define RTC_IT_INT_TAMP_2 TAMP_IER_ITAMP2IE /*!< Tamper 2 internal Interrupt */
  333. #else
  334. #define RTC_IT_INT_TAMP_2 0U
  335. #endif /* RTC_TAMP_INT_2_SUPPORT */
  336. #define RTC_IT_INT_TAMP_3 TAMP_IER_ITAMP3IE /*!< Tamper 3 internal Interrupt */
  337. #define RTC_IT_INT_TAMP_4 TAMP_IER_ITAMP4IE /*!< Tamper 4 internal Interrupt */
  338. #define RTC_IT_INT_TAMP_5 TAMP_IER_ITAMP5IE /*!< Tamper 5 internal Interrupt */
  339. #if defined (RTC_TAMP_INT_6_SUPPORT)
  340. #define RTC_IT_INT_TAMP_6 TAMP_IER_ITAMP6IE /*!< Tamper 6 internal Interrupt */
  341. #else
  342. #define RTC_IT_INT_TAMP_6 0U
  343. #endif /* RTC_TAMP_INT_6_SUPPORT */
  344. #if defined (RTC_TAMP_INT_7_SUPPORT)
  345. #define RTC_IT_INT_TAMP_7 TAMP_IER_ITAMP7IE /*!< Tamper 7 internal Interrupt */
  346. #else
  347. #define RTC_IT_INT_TAMP_7 0U
  348. #endif /* RTC_TAMP_INT_7_SUPPORT */
  349. #if defined (RTC_TAMP_INT_8_SUPPORT)
  350. #define RTC_IT_INT_TAMP_8 TAMP_IER_ITAMP8IE /*!< Tamper 8 internal Interrupt */
  351. #else
  352. #define RTC_IT_INT_TAMP_8 0U
  353. #endif /* RTC_TAMP_INT_8_SUPPORT */
  354. #define RTC_IT_INT_TAMP_ALL (RTC_IT_INT_TAMP_1 | RTC_IT_INT_TAMP_2 |\
  355. RTC_IT_INT_TAMP_3 | RTC_IT_INT_TAMP_4 |\
  356. RTC_IT_INT_TAMP_5 | RTC_IT_INT_TAMP_6 |\
  357. RTC_IT_INT_TAMP_7 | RTC_IT_INT_TAMP_8 )
  358. /**
  359. * @}
  360. */
  361. /** @defgroup RTCEx_Flags RTCEx Flags
  362. * @{
  363. */
  364. #define RTC_FLAG_TAMP_1 TAMP_SR_TAMP1F
  365. #define RTC_FLAG_TAMP_2 TAMP_SR_TAMP2F
  366. #if (RTC_TAMP_NB == 3)
  367. #define RTC_FLAG_TAMP_3 TAMP_SR_TAMP3F
  368. #define RTC_FLAG_TAMP_ALL (RTC_FLAG_TAMP_1 | RTC_FLAG_TAMP_2 | RTC_FLAG_TAMP_3)
  369. #elif (RTC_TAMP_NB == 8)
  370. #define RTC_FLAG_TAMP_3 TAMP_SR_TAMP3F
  371. #define RTC_FLAG_TAMP_4 TAMP_SR_TAMP4F
  372. #define RTC_FLAG_TAMP_5 TAMP_SR_TAMP5F
  373. #define RTC_FLAG_TAMP_6 TAMP_SR_TAMP6F
  374. #define RTC_FLAG_TAMP_7 TAMP_SR_TAMP7F
  375. #define RTC_FLAG_TAMP_8 TAMP_SR_TAMP8F
  376. #define RTC_FLAG_TAMP_ALL (RTC_FLAG_TAMP_1 | RTC_FLAG_TAMP_2 | RTC_FLAG_TAMP_3 |\
  377. RTC_FLAG_TAMP_4 | RTC_FLAG_TAMP_5 |\
  378. RTC_FLAG_TAMP_6 | RTC_FLAG_TAMP_7 | RTC_FLAG_TAMP_8)
  379. #else
  380. #define RTC_FLAG_TAMP_ALL (RTC_FLAG_TAMP_1 | RTC_FLAG_TAMP_2)
  381. #endif /* RTC_TAMP_NB */
  382. #if defined (RTC_TAMP_INT_1_SUPPORT)
  383. #define RTC_FLAG_INT_TAMP_1 TAMP_SR_ITAMP1F /*!< Tamper 1 Interrupt flag */
  384. #else
  385. #define RTC_FLAG_INT_TAMP_1 0U
  386. #endif /* RTC_TAMP_INT_1_SUPPORT */
  387. #if defined (RTC_TAMP_INT_2_SUPPORT)
  388. #define RTC_FLAG_INT_TAMP_2 TAMP_SR_ITAMP2F /*!< Tamper 2 Interrupt flag */
  389. #else
  390. #define RTC_FLAG_INT_TAMP_2 0U
  391. #endif /* RTC_TAMP_INT_2_SUPPORT */
  392. #define RTC_FLAG_INT_TAMP_3 TAMP_SR_ITAMP3F /*!< Tamper 3 Interrupt flag */
  393. #define RTC_FLAG_INT_TAMP_4 TAMP_SR_ITAMP4F /*!< Tamper 4 Interrupt flag */
  394. #define RTC_FLAG_INT_TAMP_5 TAMP_SR_ITAMP5F /*!< Tamper 5 Interrupt flag */
  395. #if defined (RTC_TAMP_INT_6_SUPPORT)
  396. #define RTC_FLAG_INT_TAMP_6 TAMP_SR_ITAMP6F /*!< Tamper 6 Interrupt flag */
  397. #else
  398. #define RTC_FLAG_INT_TAMP_6 0U
  399. #endif /* RTC_TAMP_INT_6_SUPPORT */
  400. #if defined (RTC_TAMP_INT_7_SUPPORT)
  401. #define RTC_FLAG_INT_TAMP_7 TAMP_SR_ITAMP7F /*!< Tamper 7 Interrupt flag */
  402. #else
  403. #define RTC_FLAG_INT_TAMP_7 0U
  404. #endif /* RTC_TAMP_INT_7_SUPPORT */
  405. #if defined (RTC_TAMP_INT_8_SUPPORT)
  406. #define RTC_FLAG_INT_TAMP_8 TAMP_SR_ITAMP8F /*!< Tamper 8 Interrupt flag */
  407. #else
  408. #define RTC_FLAG_INT_TAMP_8 0U
  409. #endif /* RTC_TAMP_INT_8_SUPPORT */
  410. #define RTC_FLAG_INT_TAMP_ALL (RTC_FLAG_INT_TAMP_1 | RTC_FLAG_INT_TAMP_2 |\
  411. RTC_FLAG_INT_TAMP_3 | RTC_FLAG_INT_TAMP_4 |\
  412. RTC_FLAG_INT_TAMP_5 | RTC_FLAG_INT_TAMP_6 |\
  413. RTC_FLAG_INT_TAMP_7 | RTC_FLAG_INT_TAMP_8)
  414. /**
  415. * @}
  416. */
  417. /** @defgroup RTCEx_Backup_Registers RTCEx Backup Registers Definition
  418. * @{
  419. */
  420. #define RTC_BKP_NUMBER RTC_BACKUP_NB
  421. #if (RTC_BACKUP_NB == 5)
  422. #define RTC_BKP_DR0 0x00000000U
  423. #define RTC_BKP_DR1 0x00000001U
  424. #define RTC_BKP_DR2 0x00000002U
  425. #define RTC_BKP_DR3 0x00000003U
  426. #define RTC_BKP_DR4 0x00000004U
  427. #elif (RTC_BACKUP_NB == 16)
  428. #define RTC_BKP_DR0 0x00U
  429. #define RTC_BKP_DR1 0x01U
  430. #define RTC_BKP_DR2 0x02U
  431. #define RTC_BKP_DR3 0x03U
  432. #define RTC_BKP_DR4 0x04U
  433. #define RTC_BKP_DR5 0x05U
  434. #define RTC_BKP_DR6 0x06U
  435. #define RTC_BKP_DR7 0x07U
  436. #define RTC_BKP_DR8 0x08U
  437. #define RTC_BKP_DR9 0x09U
  438. #define RTC_BKP_DR10 0x0AU
  439. #define RTC_BKP_DR11 0x0BU
  440. #define RTC_BKP_DR12 0x0CU
  441. #define RTC_BKP_DR13 0x0DU
  442. #define RTC_BKP_DR14 0x0EU
  443. #define RTC_BKP_DR15 0x0FU
  444. #elif (RTC_BACKUP_NB == 32)
  445. #define RTC_BKP_DR0 0x00U
  446. #define RTC_BKP_DR1 0x01U
  447. #define RTC_BKP_DR2 0x02U
  448. #define RTC_BKP_DR3 0x03U
  449. #define RTC_BKP_DR4 0x04U
  450. #define RTC_BKP_DR5 0x05U
  451. #define RTC_BKP_DR6 0x06U
  452. #define RTC_BKP_DR7 0x07U
  453. #define RTC_BKP_DR8 0x08U
  454. #define RTC_BKP_DR9 0x09U
  455. #define RTC_BKP_DR10 0x0AU
  456. #define RTC_BKP_DR11 0x0BU
  457. #define RTC_BKP_DR12 0x0CU
  458. #define RTC_BKP_DR13 0x0DU
  459. #define RTC_BKP_DR14 0x0EU
  460. #define RTC_BKP_DR15 0x0FU
  461. #define RTC_BKP_DR16 0x10U
  462. #define RTC_BKP_DR17 0x11U
  463. #define RTC_BKP_DR18 0x12U
  464. #define RTC_BKP_DR19 0x13U
  465. #define RTC_BKP_DR20 0x14U
  466. #define RTC_BKP_DR21 0x15U
  467. #define RTC_BKP_DR22 0x16U
  468. #define RTC_BKP_DR23 0x17U
  469. #define RTC_BKP_DR24 0x18U
  470. #define RTC_BKP_DR25 0x19U
  471. #define RTC_BKP_DR26 0x1AU
  472. #define RTC_BKP_DR27 0x1BU
  473. #define RTC_BKP_DR28 0x1CU
  474. #define RTC_BKP_DR29 0x1DU
  475. #define RTC_BKP_DR30 0x1EU
  476. #define RTC_BKP_DR31 0x1FU
  477. #else
  478. #error "no RTC Backup Registers Definition"
  479. #endif /* RTC_BKP_NUMBER */
  480. /**
  481. * @}
  482. */
  483. /**
  484. * @}
  485. */
  486. /* Exported macros -----------------------------------------------------------*/
  487. /** @defgroup RTCEx_Exported_Macros RTCEx Exported Macros
  488. * @{
  489. */
  490. /** @brief Clear the specified RTC pending flag.
  491. * @param __HANDLE__ specifies the RTC Handle.
  492. * @param __FLAG__ specifies the flag to check.
  493. * This parameter can be any combination of the following values:
  494. * @arg @ref RTC_CLEAR_ITSF Clear Internal Time-stamp flag
  495. * @arg @ref RTC_CLEAR_TSOVF Clear Time-stamp overflow flag
  496. * @arg @ref RTC_CLEAR_TSF Clear Time-stamp flag
  497. * @arg @ref RTC_CLEAR_WUTF Clear Wakeup timer flag
  498. * @arg @ref RTC_CLEAR_ALRBF Clear Alarm B flag
  499. * @arg @ref RTC_CLEAR_ALRAF Clear Alarm A flag
  500. * @retval None
  501. */
  502. #define __HAL_RTC_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SCR = (__FLAG__))
  503. /** @brief Check whether the specified RTC flag is set or not.
  504. * @param __HANDLE__ specifies the RTC Handle.
  505. * @param __FLAG__ specifies the flag to check.
  506. * This parameter can be any combination of the following values:
  507. * @arg @ref RTC_FLAG_RECALPF Recalibration pending Flag
  508. * @arg @ref RTC_FLAG_INITF Initialization flag
  509. * @arg @ref RTC_FLAG_RSF Registers synchronization flag
  510. * @arg @ref RTC_FLAG_INITS Initialization status flag
  511. * @arg @ref RTC_FLAG_SHPF Shift operation pending flag
  512. * @arg @ref RTC_FLAG_WUTWF Wakeup timer write flag
  513. * @arg @ref RTC_FLAG_ALRBWF Alarm B write flag
  514. * @arg @ref RTC_FLAG_ALRAWF Alarm A write flag
  515. * @arg @ref RTC_FLAG_ITSF Internal Time-stamp flag
  516. * @arg @ref RTC_FLAG_TSOVF Time-stamp overflow flag
  517. * @arg @ref RTC_FLAG_TSF Time-stamp flag
  518. * @arg @ref RTC_FLAG_WUTF Wakeup timer flag
  519. * @arg @ref RTC_FLAG_ALRBF Alarm B flag
  520. * @arg @ref RTC_FLAG_ALRAF Alarm A flag
  521. * @retval None
  522. */
  523. #define __HAL_RTC_GET_FLAG(__HANDLE__, __FLAG__) (((((__FLAG__)) >> 8U) == 1U) ? ((__HANDLE__)->Instance->ICSR & (1U << (((uint16_t)(__FLAG__)) & RTC_FLAG_MASK))) : \
  524. ((__HANDLE__)->Instance->SR & (1U << (((uint16_t)(__FLAG__)) & RTC_FLAG_MASK))))
  525. /* ---------------------------------WAKEUPTIMER---------------------------------*/
  526. /** @defgroup RTCEx_WakeUp_Timer RTC WakeUp Timer
  527. * @{
  528. */
  529. /**
  530. * @brief Enable the RTC WakeUp Timer peripheral.
  531. * @param __HANDLE__ specifies the RTC handle.
  532. * @retval None
  533. */
  534. #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
  535. /**
  536. * @brief Disable the RTC WakeUp Timer peripheral.
  537. * @param __HANDLE__ specifies the RTC handle.
  538. * @retval None
  539. */
  540. #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
  541. /**
  542. * @brief Enable the RTC WakeUpTimer interrupt.
  543. * @param __HANDLE__ specifies the RTC handle.
  544. * @param __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled.
  545. * This parameter can be:
  546. * @arg @ref RTC_IT_WUT WakeUpTimer interrupt
  547. * @retval None
  548. */
  549. #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
  550. /**
  551. * @brief Disable the RTC WakeUpTimer interrupt.
  552. * @param __HANDLE__ specifies the RTC handle.
  553. * @param __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be disabled.
  554. * This parameter can be:
  555. * @arg @ref RTC_IT_WUT WakeUpTimer interrupt
  556. * @retval None
  557. */
  558. #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
  559. /**
  560. * @brief Check whether the specified RTC WakeUpTimer interrupt has occurred or not.
  561. * @param __HANDLE__ specifies the RTC handle.
  562. * @param __INTERRUPT__ specifies the RTC WakeUpTimer interrupt to check.
  563. * This parameter can be:
  564. * @arg @ref RTC_IT_WUT WakeUpTimer interrupt
  565. * @retval None
  566. */
  567. #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->MISR)\
  568. & ((__INTERRUPT__)>> 12U)) != 0UL) ? 1UL : 0UL)
  569. /**
  570. * @brief Check whether the specified RTC Wake Up timer interrupt has been enabled or not.
  571. * @param __HANDLE__ specifies the RTC handle.
  572. * @param __INTERRUPT__ specifies the RTC Wake Up timer interrupt sources to check.
  573. * This parameter can be:
  574. * @arg @ref RTC_IT_WUT WakeUpTimer interrupt
  575. * @retval None
  576. */
  577. #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR)\
  578. & (__INTERRUPT__)) != 0UL) ? 1UL : 0UL)
  579. /**
  580. * @brief Get the selected RTC WakeUpTimers flag status.
  581. * @param __HANDLE__ specifies the RTC handle.
  582. * @param __FLAG__ specifies the RTC WakeUpTimer Flag is pending or not.
  583. * This parameter can be:
  584. * @arg @ref RTC_FLAG_WUTF
  585. * @arg @ref RTC_FLAG_WUTWF
  586. * @retval None
  587. */
  588. #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__), (__FLAG__)))
  589. /**
  590. * @brief Clear the RTC Wake Up timers pending flags.
  591. * @param __HANDLE__ specifies the RTC handle.
  592. * @param __FLAG__ specifies the RTC WakeUpTimer Flag to clear.
  593. * This parameter can be:
  594. * @arg @ref RTC_FLAG_WUTF
  595. * @retval None
  596. */
  597. #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_CLEAR_FLAG((__HANDLE__), RTC_CLEAR_WUTF))
  598. /* WAKE-UP TIMER EXTI */
  599. /* ------------------ */
  600. /**
  601. * @brief Enable interrupt on the RTC WakeUp Timer associated Exti line.
  602. * @retval None
  603. */
  604. #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  605. /**
  606. * @brief Disable interrupt on the RTC WakeUp Timer associated Exti line.
  607. * @retval None
  608. */
  609. #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
  610. /**
  611. * @brief set the rising edge for interrupt on the RTC WakeUp Timer associated Exti line.
  612. * @retval None
  613. */
  614. #define __HAL_RTC_WAKEUPTIMER_EXTI_RISING_IT() (EXTI->RTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  615. /**
  616. * @brief set the falling edge for interrupt on the RTC WakeUp Timer associated Exti line.
  617. * @retval None
  618. */
  619. #define __HAL_RTC_WAKEUPTIMER_EXTI_FALLING_IT() (EXTI->FTSR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  620. /**
  621. * @brief Clear the interrupt on the RTC WakeUp Timer associated Exti line.
  622. * @retval None
  623. */
  624. #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_IT() (EXTI->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  625. /**
  626. * @brief Clear the interrupt on the RTC WakeUp Timer associated Exti line.
  627. * @retval None
  628. */
  629. #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() (EXTI->PR1 = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  630. /**
  631. * @brief Enable event on the RTC WakeUp Timer associated Exti line.
  632. * @retval None.
  633. */
  634. #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  635. /**
  636. * @brief Disable event on the RTC WakeUp Timer associated Exti line.
  637. * @retval None.
  638. */
  639. #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
  640. /**
  641. * @}
  642. */
  643. /* ---------------------------------TIMESTAMP---------------------------------*/
  644. /** @defgroup RTCEx_Timestamp RTC Timestamp
  645. * @{
  646. */
  647. /**
  648. * @brief Enable the RTC TimeStamp peripheral.
  649. * @param __HANDLE__ specifies the RTC handle.
  650. * @retval None
  651. */
  652. #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
  653. /**
  654. * @brief Disable the RTC TimeStamp peripheral.
  655. * @param __HANDLE__ specifies the RTC handle.
  656. * @retval None
  657. */
  658. #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
  659. /**
  660. * @brief Enable the RTC TimeStamp interrupt.
  661. * @param __HANDLE__ specifies the RTC handle.
  662. * @param __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be enabled.
  663. * This parameter can be:
  664. * @arg @ref RTC_IT_TS TimeStamp interrupt
  665. * @retval None
  666. */
  667. #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
  668. /**
  669. * @brief Disable the RTC TimeStamp interrupt.
  670. * @param __HANDLE__ specifies the RTC handle.
  671. * @param __INTERRUPT__ specifies the RTC TimeStamp interrupt source to be disabled.
  672. * This parameter can be:
  673. * @arg @ref RTC_IT_TS TimeStamp interrupt
  674. * @retval None
  675. */
  676. #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
  677. /**
  678. * @brief Check whether the specified RTC TimeStamp interrupt has occurred or not.
  679. * @param __HANDLE__ specifies the RTC handle.
  680. * @param __INTERRUPT__ specifies the RTC TimeStamp interrupt to check.
  681. * This parameter can be:
  682. * @arg @ref RTC_IT_TS TimeStamp interrupt
  683. * @retval None
  684. */
  685. #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->MISR)\
  686. & ((__INTERRUPT__)>> 12U)) != 0U) ? 1UL : 0UL)
  687. /**
  688. * @brief Check whether the specified RTC Time Stamp interrupt has been enabled or not.
  689. * @param __HANDLE__ specifies the RTC handle.
  690. * @param __INTERRUPT__ specifies the RTC Time Stamp interrupt source to check.
  691. * This parameter can be:
  692. * @arg @ref RTC_IT_TS TimeStamp interrupt
  693. * @retval None
  694. */
  695. #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR)\
  696. & (__INTERRUPT__)) != 0U) ? 1UL : 0UL)
  697. /**
  698. * @brief Get the selected RTC TimeStamps flag status.
  699. * @param __HANDLE__ specifies the RTC handle.
  700. * @param __FLAG__ specifies the RTC TimeStamp Flag is pending or not.
  701. * This parameter can be:
  702. * @arg @ref RTC_FLAG_TSF
  703. * @arg @ref RTC_FLAG_TSOVF
  704. * @retval None
  705. */
  706. #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__),(__FLAG__)))
  707. /**
  708. * @brief Clear the RTC Time Stamps pending flags.
  709. * @param __HANDLE__ specifies the RTC handle.
  710. * @param __FLAG__ specifies the RTC TimeStamp Flag to clear.
  711. * This parameter can be:
  712. * @arg @ref RTC_FLAG_TSF
  713. * @arg @ref RTC_FLAG_TSOVF
  714. * @retval None
  715. */
  716. #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_CLEAR_FLAG((__HANDLE__), (__FLAG__)))
  717. /* TIMESTAMP TIMER EXTI */
  718. /* -------------------- */
  719. /**
  720. * @brief Enable interrupt on the RTC Timestamp associated Exti line.
  721. * @retval None
  722. */
  723. #define __HAL_RTC_TIMESTAMP_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_TIMESTAMP_EVENT)
  724. /**
  725. * @brief Disable interrupt on the RTC Timestamp associated Exti line.
  726. * @retval None
  727. */
  728. #define __HAL_RTC_TIMESTAMP_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_TIMESTAMP_EVENT))
  729. /**
  730. * @brief set the rising edge for interrupt on the RTC WakeUp Timer associated Exti line.
  731. * @retval None
  732. */
  733. #define __HAL_RTC_TIMESTAMP_EXTI_RISING_IT() (EXTI->RTSR1 |= RTC_EXTI_LINE_TIMESTAMP_EVENT)
  734. /**
  735. * @brief set the falling edge for interrupt on the RTC WakeUp Timer associated Exti line.
  736. * @retval None
  737. */
  738. #define __HAL_RTC_TIMESTAMP_EXTI_FALLING_IT() (EXTI->FSTR1 |= RTC_EXTI_LINE_TIMESTAMP_EVENT)
  739. /**
  740. * @brief Clear the interrupt on the RTC WakeUp Timer associated Exti line.
  741. * @retval None
  742. */
  743. #define __HAL_RTC_TIMESTAMP_EXTI_CLEAR_IT() (EXTI->PR1 = RTC_EXTI_LINE_TIMESTAMP_EVENT)
  744. /**
  745. * @brief Clear the interrupt on the RTC Timestamp associated Exti line.
  746. * @retval None
  747. */
  748. #define __HAL_RTC_TIMESTAMP_EXTI_CLEAR_FLAG() (EXTI->PR1 = RTC_EXTI_LINE_TIMESTAMP_EVENT)
  749. /**
  750. * @brief Enable event on the RTC Timestamp associated Exti line.
  751. * @retval None
  752. */
  753. #define __HAL_RTC_TIMESTAMP_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_TIMESTAMP_EVENT)
  754. /**
  755. * @brief Disable event on the RTC Timestamp associated Exti line.
  756. * @retval None
  757. */
  758. #define __HAL_RTC_TIMESTAMP_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_TIMESTAMP_EVENT))
  759. /**
  760. * @brief Enable the RTC internal TimeStamp peripheral.
  761. * @param __HANDLE__ specifies the RTC handle.
  762. * @retval None
  763. */
  764. #define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE))
  765. /**
  766. * @brief Disable the RTC internal TimeStamp peripheral.
  767. * @param __HANDLE__ specifies the RTC handle.
  768. * @retval None
  769. */
  770. #define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE))
  771. /**
  772. * @brief Get the selected RTC Internal Time Stamps flag status.
  773. * @param __HANDLE__ specifies the RTC handle.
  774. * @param __FLAG__ specifies the RTC Internal Time Stamp Flag is pending or not.
  775. * This parameter can be:
  776. * @arg @ref RTC_FLAG_ITSF
  777. * @retval None
  778. */
  779. #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__),(__FLAG__)))
  780. /**
  781. * @brief Clear the RTC Internal Time Stamps pending flags.
  782. * @param __HANDLE__ specifies the RTC handle.
  783. * @param __FLAG__ specifies the RTC Internal Time Stamp Flag source to clear.
  784. * This parameter can be:
  785. * @arg @ref RTC_FLAG_ITSF
  786. * @retval None
  787. */
  788. #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_CLEAR_FLAG((__HANDLE__), RTC_CLEAR_ITSF))
  789. /**
  790. * @brief Enable the RTC TimeStamp on Tamper detection.
  791. * @param __HANDLE__ specifies the RTC handle.
  792. * @retval None
  793. */
  794. #define __HAL_RTC_TAMPTS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TAMPTS))
  795. /**
  796. * @brief Disable the RTC TimeStamp on Tamper detection.
  797. * @param __HANDLE__ specifies the RTC handle.
  798. * @retval None
  799. */
  800. #define __HAL_RTC_TAMPTS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TAMPTS))
  801. /**
  802. * @brief Enable the RTC Tamper detection output.
  803. * @param __HANDLE__ specifies the RTC handle.
  804. * @retval None
  805. */
  806. #define __HAL_RTC_TAMPOE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_TAMPOE))
  807. /**
  808. * @brief Disable the RTC Tamper detection output.
  809. * @param __HANDLE__ specifies the RTC handle.
  810. * @retval None
  811. */
  812. #define __HAL_RTC_TAMPOE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TAMPOE))
  813. /**
  814. * @}
  815. */
  816. /* ------------------------------Calibration----------------------------------*/
  817. /** @defgroup RTCEx_Calibration RTC Calibration
  818. * @{
  819. */
  820. /**
  821. * @brief Enable the RTC calibration output.
  822. * @param __HANDLE__ specifies the RTC handle.
  823. * @retval None
  824. */
  825. #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
  826. /**
  827. * @brief Disable the calibration output.
  828. * @param __HANDLE__ specifies the RTC handle.
  829. * @retval None
  830. */
  831. #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
  832. /**
  833. * @brief Enable the clock reference detection.
  834. * @param __HANDLE__ specifies the RTC handle.
  835. * @retval None
  836. */
  837. #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
  838. /**
  839. * @brief Disable the clock reference detection.
  840. * @param __HANDLE__ specifies the RTC handle.
  841. * @retval None
  842. */
  843. #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
  844. /**
  845. * @brief Get the selected RTC shift operations flag status.
  846. * @param __HANDLE__ specifies the RTC handle.
  847. * @param __FLAG__ specifies the RTC shift operation Flag is pending or not.
  848. * This parameter can be:
  849. * @arg @ref RTC_FLAG_SHPF
  850. * @retval None
  851. */
  852. #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__), (__FLAG__)))
  853. /**
  854. * @}
  855. */
  856. /* ------------------------------Tamper----------------------------------*/
  857. /** @defgroup RTCEx_Tamper RTCEx tamper
  858. * @{
  859. */
  860. /**
  861. * @brief Enable the TAMP Tamper input detection.
  862. * @param __HANDLE__ specifies the RTC handle.
  863. * @param __TAMPER__ specifies the RTC Tamper source to be enabled.
  864. * This parameter can be any combination of the following values:
  865. * @arg RTC_TAMPER_ALL: All tampers
  866. * @arg RTC_TAMPER_1: Tamper1
  867. * @arg RTC_TAMPER_2: Tamper2
  868. * @retval None
  869. */
  870. #define __HAL_RTC_TAMPER_ENABLE(__HANDLE__, __TAMPER__) (TAMP->CR1 |= (__TAMPER__))
  871. /**
  872. * @brief Disable the TAMP Tamper input detection.
  873. * @param __HANDLE__ specifies the RTC handle.
  874. * @param __TAMPER__ specifies the RTC Tamper sources to be enabled.
  875. * This parameter can be any combination of the following values:
  876. * @arg RTC_TAMPER_ALL: All tampers
  877. * @arg RTC_TAMPER_1: Tamper1
  878. * @arg RTC_TAMPER_2: Tamper2
  879. */
  880. #define __HAL_RTC_TAMPER_DISABLE(__HANDLE__, __TAMPER__) (TAMP->CR1 &= ~(__TAMPER__))
  881. /**************************************************************************************************/
  882. /**
  883. * @brief Enable the TAMP Tamper interrupt.
  884. * @param __HANDLE__ specifies the RTC handle.
  885. * @param __INTERRUPT__ specifies the RTC Tamper interrupt sources to be enabled.
  886. * This parameter can be any combination of the following values:
  887. * @arg RTC_IT_TAMP_ALL: All tampers interrupts
  888. * @arg RTC_IT_TAMP_1: Tamper1 interrupt
  889. * @arg RTC_IT_TAMP_2: Tamper2 interrupt
  890. * @retval None
  891. */
  892. #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__) (TAMP->IER |= (__INTERRUPT__))
  893. /**
  894. * @brief Disable the TAMP Tamper interrupt.
  895. * @param __HANDLE__ specifies the RTC handle.
  896. * @param __INTERRUPT__ specifies the RTC Tamper interrupt sources to be disabled.
  897. * This parameter can be any combination of the following values:
  898. * @arg RTC_IT_TAMP_ALL: All tampers interrupts
  899. * @arg RTC_IT_TAMP_1: Tamper1 interrupt
  900. * @arg RTC_IT_TAMP_2: Tamper2 interrupt
  901. * @retval None
  902. */
  903. #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__) (TAMP->IER &= ~(__INTERRUPT__))
  904. /**************************************************************************************************/
  905. /**
  906. * @brief Check whether the specified TAMP Tamper interrupt has occurred or not.
  907. * @param __HANDLE__ specifies the RTC handle.
  908. * @param __INTERRUPT__ specifies the RTC Tamper interrupt to check.
  909. * This parameter can be:
  910. * @arg RTC_IT_TAMP_ALL: All tampers interrupts
  911. * @arg RTC_IT_TAMP_1: Tamper1 interrupt
  912. * @arg RTC_IT_TAMP_2: Tamper2 interrupt
  913. * @retval None
  914. */
  915. #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__) ((((TAMP->MISR)\
  916. & (__INTERRUPT__)) != 0UL) ? 1UL : 0UL)
  917. /**
  918. * @brief Check whether the specified TAMP Tamper interrupt has been enabled or not.
  919. * @param __HANDLE__ specifies the RTC handle.
  920. * @param __INTERRUPT__ specifies the RTC Tamper interrupt source to check.
  921. * This parameter can be:
  922. * @arg RTC_IT_TAMP_ALL: All tampers interrupts
  923. * @arg RTC_IT_TAMP_1: Tamper1 interrupt
  924. * @arg RTC_IT_TAMP_2: Tamper2 interrupt
  925. * @retval None
  926. */
  927. #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((TAMP->IER)\
  928. & (__INTERRUPT__)) != 0UL) ? 1UL : 0UL)
  929. /**
  930. * @brief Get the selected TAMP Tampers flag status.
  931. * @param __HANDLE__ specifies the RTC handle.
  932. * @param __FLAG__ specifies the RTC Tamper Flag is pending or not.
  933. * This parameter can be:
  934. * @arg RTC_FLAG_TAMP_ALL: All tampers flag
  935. * @arg RTC_FLAG_TAMP_1: Tamper1 flag
  936. * @arg RTC_FLAG_TAMP_2: Tamper2 flag
  937. * @retval None
  938. */
  939. #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__) (((TAMP->SR) & (__FLAG__)) != 0UL)
  940. /**
  941. * @brief Clear the TAMP Tampers pending flags.
  942. * @param __HANDLE__ specifies the RTC handle.
  943. * @param __FLAG__ specifies the RTC Tamper Flag to clear.
  944. * This parameter can be:
  945. * @arg RTC_FLAG_TAMP_ALL: All tampers flag
  946. * @arg RTC_FLAG_TAMP_1: Tamper1 flag
  947. * @arg RTC_FLAG_TAMP_2: Tamper2 flag
  948. * @retval None
  949. */
  950. #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((TAMP->SCR) = (__FLAG__))
  951. /**
  952. * @brief Enable interrupt on the RTC Tamper associated Exti line.
  953. * @retval None
  954. */
  955. #define __HAL_RTC_TAMPER_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_TAMPER_EVENT)
  956. /**
  957. * @brief Disable interrupt on the RTC Tamper associated Exti line.
  958. * @retval None
  959. */
  960. #define __HAL_RTC_TAMPER_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_TAMPER_EVENT))
  961. /**
  962. * @brief Enable interrupt on the RTC WakeUp Timer associated Exti line.
  963. * @retval None
  964. */
  965. #define __HAL_RTC_TAMPER_EXTI_RISING_IT() (EXTI->RTSR1 |= RTC_EXTI_LINE_TAMPER_EVENT)
  966. /**
  967. * @brief Enable interrupt on the RTC WakeUp Timer associated Exti line.
  968. * @retval None
  969. */
  970. #define __HAL_RTC_TAMPER_EXTI_FALLING_IT() (EXTI->FSTR1 |= RTC_EXTI_LINE_TAMPER_EVENT)
  971. /**
  972. * @brief Clear the interrupt on the RTC WakeUp Timer associated Exti line.
  973. * @retval None
  974. */
  975. #define __HAL_RTC_TAMPER_EXTI_CLEAR_IT() (EXTI->PR1 = RTC_EXTI_LINE_TAMPER_EVENT)
  976. /**
  977. * @brief Enable event on the RTC Tamper associated Exti line.
  978. * @retval None
  979. */
  980. #define __HAL_RTC_TAMPER_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_TAMPER_EVENT)
  981. /**
  982. * @brief Disable event on the RTC Tamper associated Exti line.
  983. * @retval None
  984. */
  985. #define __HAL_RTC_TAMPER_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_TAMPER_EVENT))
  986. /**
  987. * @}
  988. */
  989. /**
  990. * @}
  991. */
  992. /* Exported functions --------------------------------------------------------*/
  993. /** @defgroup RTCEx_Exported_Functions RTCEx Exported Functions
  994. * @{
  995. */
  996. /* RTC TimeStamp functions *****************************************/
  997. /** @defgroup RTCEx_Exported_Functions_Group1 Extended RTC TimeStamp functions
  998. * @{
  999. */
  1000. HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
  1001. HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
  1002. HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
  1003. HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc);
  1004. HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTimeStamp(RTC_HandleTypeDef *hrtc);
  1005. HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp,
  1006. RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
  1007. void HAL_RTCEx_TimeStampIRQHandler(RTC_HandleTypeDef *hrtc);
  1008. HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1009. void HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc);
  1010. /**
  1011. * @}
  1012. */
  1013. /* RTC Wake-up functions ******************************************************/
  1014. /** @defgroup RTCEx_Exported_Functions_Group2 Extended RTC Wake-up functions
  1015. * @{
  1016. */
  1017. HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
  1018. HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
  1019. HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
  1020. uint32_t HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc);
  1021. void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc);
  1022. void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc);
  1023. HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1024. /**
  1025. * @}
  1026. */
  1027. /* Extended Control functions ************************************************/
  1028. /** @defgroup RTCEx_Exported_Functions_Group3 Extended Peripheral Control functions
  1029. * @{
  1030. */
  1031. HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod,
  1032. uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue);
  1033. HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
  1034. HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
  1035. HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc);
  1036. HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);
  1037. HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);
  1038. HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);
  1039. HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);
  1040. /**
  1041. * @}
  1042. */
  1043. /* Extended RTC features functions *******************************************/
  1044. /** @defgroup RTCEx_Exported_Functions_Group4 Extended features functions
  1045. * @{
  1046. */
  1047. void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc);
  1048. HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1049. /**
  1050. * @}
  1051. */
  1052. /** @defgroup RTCEx_Exported_Functions_Group5 Extended RTC Tamper functions
  1053. * @{
  1054. */
  1055. HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
  1056. HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
  1057. HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
  1058. HAL_StatusTypeDef HAL_RTCEx_PollForTamperEvent(RTC_HandleTypeDef *hrtc, uint32_t Tamper, uint32_t Timeout);
  1059. HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper);
  1060. HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper_IT(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper);
  1061. HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTamper(RTC_HandleTypeDef *hrtc, uint32_t IntTamper);
  1062. HAL_StatusTypeDef HAL_RTCEx_PollForInternalTamperEvent(RTC_HandleTypeDef *hrtc, uint32_t IntTamper, uint32_t Timeout);
  1063. void HAL_RTCEx_TamperIRQHandler(RTC_HandleTypeDef *hrtc);
  1064. void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc);
  1065. void HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc);
  1066. #if (RTC_TAMP_NB == 3)
  1067. void HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc);
  1068. #endif /* RTC_TAMP_NB */
  1069. #ifdef RTC_TAMP_INT_1_SUPPORT
  1070. void HAL_RTCEx_InternalTamper1EventCallback(RTC_HandleTypeDef *hrtc);
  1071. #endif /* RTC_TAMP_INT_1_SUPPORT */
  1072. #ifdef RTC_TAMP_INT_2_SUPPORT
  1073. void HAL_RTCEx_InternalTamper2EventCallback(RTC_HandleTypeDef *hrtc);
  1074. #endif /* RTC_TAMP_INT_2_SUPPORT */
  1075. void HAL_RTCEx_InternalTamper3EventCallback(RTC_HandleTypeDef *hrtc);
  1076. void HAL_RTCEx_InternalTamper4EventCallback(RTC_HandleTypeDef *hrtc);
  1077. void HAL_RTCEx_InternalTamper5EventCallback(RTC_HandleTypeDef *hrtc);
  1078. #ifdef RTC_TAMP_INT_6_SUPPORT
  1079. void HAL_RTCEx_InternalTamper6EventCallback(RTC_HandleTypeDef *hrtc);
  1080. #endif /* RTC_TAMP_INT_6_SUPPORT */
  1081. #ifdef RTC_TAMP_INT_7_SUPPORT
  1082. void HAL_RTCEx_InternalTamper7EventCallback(RTC_HandleTypeDef *hrtc);
  1083. #endif /* RTC_TAMP_INT_7_SUPPORT */
  1084. /**
  1085. * @}
  1086. */
  1087. /** @defgroup RTCEx_Exported_Functions_Group6 Extended RTC Backup register functions
  1088. * @{
  1089. */
  1090. void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
  1091. uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
  1092. /**
  1093. * @}
  1094. */
  1095. /**
  1096. * @}
  1097. */
  1098. /* Private types -------------------------------------------------------------*/
  1099. /* Private variables ---------------------------------------------------------*/
  1100. /* Private constants ---------------------------------------------------------*/
  1101. /** @defgroup RTCEx_Private_Constants RTCEx Private Constants
  1102. * @{
  1103. */
  1104. #define RTC_EXTI_LINE_ALARM_EVENT EXTI_IMR1_IM17 /*!< External interrupt line 17 Connected to the RTC Alarm event */
  1105. #define RTC_EXTI_LINE_TIMESTAMP_EVENT EXTI_IMR1_IM19 /*!< External interrupt line 19 Connected to the RTC tamper/Time Stamp/CSS_LSE events */
  1106. #define RTC_EXTI_LINE_TAMPER_EVENT EXTI_IMR1_IM19 /*!< External interrupt line 19 Connected to the RTC tamper/Time Stamp/CSS_LSE events */
  1107. #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT EXTI_IMR1_IM20 /*!< External interrupt line 20 Connected to the RTC Wakeup event */
  1108. /**
  1109. * @}
  1110. */
  1111. /* Private macros ------------------------------------------------------------*/
  1112. /** @defgroup RTCEx_Private_Macros RTCEx Private Macros
  1113. * @{
  1114. */
  1115. /** @defgroup RTCEx_IS_RTC_Definitions Private macros to check input parameters
  1116. * @{
  1117. */
  1118. #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
  1119. ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
  1120. #define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT))
  1121. #define IS_RTC_TIMESTAMPONTAMPER_DETECTION(DETECTION) (((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
  1122. ((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
  1123. #define IS_RTC_TAMPER_TAMPERDETECTIONOUTPUT(MODE) (((MODE) == RTC_TAMPERDETECTIONOUTPUT_ENABLE) || \
  1124. ((MODE) == RTC_TAMPERDETECTIONOUTPUT_DISABLE))
  1125. #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16) || \
  1126. ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8) || \
  1127. ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4) || \
  1128. ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2) || \
  1129. ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
  1130. ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
  1131. #define IS_RTC_WAKEUP_COUNTER(COUNTER) ((COUNTER) <= RTC_WUTR_WUT)
  1132. #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
  1133. ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
  1134. ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
  1135. #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
  1136. ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
  1137. #define IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= RTC_CALR_CALM)
  1138. #define IS_RTC_LOW_POWER_CALIB(LPCAL) (((LPCAL) == RTC_LPCAL_SET) || \
  1139. ((LPCAL) == RTC_LPCAL_RESET))
  1140. #define IS_RTC_TAMPER(__TAMPER__) ((((__TAMPER__) & RTC_TAMPER_ALL) != 0x00U) && \
  1141. (((__TAMPER__) & ~RTC_TAMPER_ALL) == 0x00U))
  1142. #define IS_RTC_INTERNAL_TAMPER(__INT_TAMPER__) ((((__INT_TAMPER__) & RTC_INT_TAMPER_ALL) != 0x00U) && \
  1143. (((__INT_TAMPER__) & ~RTC_INT_TAMPER_ALL) == 0x00U))
  1144. #define IS_RTC_TAMPER_TRIGGER(__TRIGGER__) (((__TRIGGER__) == RTC_TAMPERTRIGGER_RISINGEDGE) || \
  1145. ((__TRIGGER__) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \
  1146. ((__TRIGGER__) == RTC_TAMPERTRIGGER_LOWLEVEL) || \
  1147. ((__TRIGGER__) == RTC_TAMPERTRIGGER_HIGHLEVEL))
  1148. #define IS_RTC_TAMPER_ERASE_MODE(__MODE__) (((__MODE__) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \
  1149. ((__MODE__) == RTC_TAMPER_ERASE_BACKUP_DISABLE))
  1150. #define IS_RTC_TAMPER_MASKFLAG_STATE(__STATE__) (((__STATE__) == RTC_TAMPERMASK_FLAG_ENABLE) || \
  1151. ((__STATE__) == RTC_TAMPERMASK_FLAG_DISABLE))
  1152. #define IS_RTC_TAMPER_FILTER(__FILTER__) (((__FILTER__) == RTC_TAMPERFILTER_DISABLE) || \
  1153. ((__FILTER__) == RTC_TAMPERFILTER_2SAMPLE) || \
  1154. ((__FILTER__) == RTC_TAMPERFILTER_4SAMPLE) || \
  1155. ((__FILTER__) == RTC_TAMPERFILTER_8SAMPLE))
  1156. #define IS_RTC_TAMPER_SAMPLING_FREQ(__FREQ__) (((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
  1157. ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
  1158. ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
  1159. ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
  1160. ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
  1161. ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
  1162. ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512) || \
  1163. ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
  1164. #define IS_RTC_TAMPER_PRECHARGE_DURATION(__DURATION__) (((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
  1165. ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
  1166. ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
  1167. ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
  1168. #define IS_RTC_TAMPER_PULLUP_STATE(__STATE__) (((__STATE__) == RTC_TAMPER_PULLUP_ENABLE) || \
  1169. ((__STATE__) == RTC_TAMPER_PULLUP_DISABLE))
  1170. #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(DETECTION) (((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
  1171. ((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
  1172. #define IS_RTC_BKP(__BKP__) ((__BKP__) < RTC_BKP_NUMBER)
  1173. #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
  1174. ((SEL) == RTC_SHIFTADD1S_SET))
  1175. #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= RTC_SHIFTR_SUBFS)
  1176. #define IS_RTC_CALIB_OUTPUT(OUTPUT) (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
  1177. ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
  1178. /**
  1179. * @}
  1180. */
  1181. /**
  1182. * @}
  1183. */
  1184. /**
  1185. * @}
  1186. */
  1187. /**
  1188. * @}
  1189. */
  1190. #ifdef __cplusplus
  1191. }
  1192. #endif
  1193. #endif /* STM32G4xx_HAL_RTC_EX_H */