fm33lc0xx_fl_rtc.h 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_rtc.h
  4. * @author FMSH Application Team
  5. * @brief Head file of RTC FL Module
  6. *******************************************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) [2021] [Fudan Microelectronics]
  10. * THIS SOFTWARE is licensed under Mulan PSL v2.
  11. * You can use this software according to the terms and conditions of the Mulan PSL v2.
  12. * You may obtain a copy of Mulan PSL v2 at:
  13. * http://license.coscl.org.cn/MulanPSL2
  14. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
  15. * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
  16. * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  17. * See the Mulan PSL v2 for more details.
  18. *
  19. *******************************************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion---------------------------------------------------------------*/
  22. #ifndef __FM33LC0XX_FL_RTC_H
  23. #define __FM33LC0XX_FL_RTC_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes -------------------------------------------------------------------------------------------*/
  28. #include "fm33lc0xx_fl_def.h"
  29. /** @addtogroup FM33LC0XX_FL_Driver
  30. * @{
  31. */
  32. /** @defgroup RTC RTC
  33. * @brief RTC FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup RTC_FL_ES_INIT RTC Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief Configuration with temporary structure variable users will not be used directly
  42. */
  43. typedef struct
  44. {
  45. __IO uint32_t backup[7];
  46. } FL_RTC_Backup_ADDR;
  47. /**
  48. * @brief RTC Init Sturcture definition
  49. */
  50. typedef struct
  51. {
  52. /** 年 */
  53. uint32_t year;
  54. /** 月 */
  55. uint32_t month;
  56. /** 日 */
  57. uint32_t day;
  58. /** 周 */
  59. uint32_t week;
  60. /** 时 */
  61. uint32_t hour;
  62. /** 分 */
  63. uint32_t minute;
  64. /** 秒 */
  65. uint32_t second;
  66. } FL_RTC_InitTypeDef;
  67. /**
  68. * @}
  69. */
  70. /* Exported constants ---------------------------------------------------------------------------------*/
  71. /** @defgroup RTC_FL_Exported_Constants RTC Exported Constants
  72. * @{
  73. */
  74. #define RTC_IER_ADJ_IE_Pos (12U)
  75. #define RTC_IER_ADJ_IE_Msk (0x1U << RTC_IER_ADJ_IE_Pos)
  76. #define RTC_IER_ADJ_IE RTC_IER_ADJ_IE_Msk
  77. #define RTC_IER_ALARM_IE_Pos (11U)
  78. #define RTC_IER_ALARM_IE_Msk (0x1U << RTC_IER_ALARM_IE_Pos)
  79. #define RTC_IER_ALARM_IE RTC_IER_ALARM_IE_Msk
  80. #define RTC_IER_1KHZ_IE_Pos (10U)
  81. #define RTC_IER_1KHZ_IE_Msk (0x1U << RTC_IER_1KHZ_IE_Pos)
  82. #define RTC_IER_1KHZ_IE RTC_IER_1KHZ_IE_Msk
  83. #define RTC_IER_256HZ_IE_Pos (9U)
  84. #define RTC_IER_256HZ_IE_Msk (0x1U << RTC_IER_256HZ_IE_Pos)
  85. #define RTC_IER_256HZ_IE RTC_IER_256HZ_IE_Msk
  86. #define RTC_IER_64HZ_IE_Pos (8U)
  87. #define RTC_IER_64HZ_IE_Msk (0x1U << RTC_IER_64HZ_IE_Pos)
  88. #define RTC_IER_64HZ_IE RTC_IER_64HZ_IE_Msk
  89. #define RTC_IER_16HZ_IE_Pos (7U)
  90. #define RTC_IER_16HZ_IE_Msk (0x1U << RTC_IER_16HZ_IE_Pos)
  91. #define RTC_IER_16HZ_IE RTC_IER_16HZ_IE_Msk
  92. #define RTC_IER_8HZ_IE_Pos (6U)
  93. #define RTC_IER_8HZ_IE_Msk (0x1U << RTC_IER_8HZ_IE_Pos)
  94. #define RTC_IER_8HZ_IE RTC_IER_8HZ_IE_Msk
  95. #define RTC_IER_4HZ_IE_Pos (5U)
  96. #define RTC_IER_4HZ_IE_Msk (0x1U << RTC_IER_4HZ_IE_Pos)
  97. #define RTC_IER_4HZ_IE RTC_IER_4HZ_IE_Msk
  98. #define RTC_IER_2HZ_IE_Pos (4U)
  99. #define RTC_IER_2HZ_IE_Msk (0x1U << RTC_IER_2HZ_IE_Pos)
  100. #define RTC_IER_2HZ_IE RTC_IER_2HZ_IE_Msk
  101. #define RTC_IER_SEC_IE_Pos (3U)
  102. #define RTC_IER_SEC_IE_Msk (0x1U << RTC_IER_SEC_IE_Pos)
  103. #define RTC_IER_SEC_IE RTC_IER_SEC_IE_Msk
  104. #define RTC_IER_MIN_IE_Pos (2U)
  105. #define RTC_IER_MIN_IE_Msk (0x1U << RTC_IER_MIN_IE_Pos)
  106. #define RTC_IER_MIN_IE RTC_IER_MIN_IE_Msk
  107. #define RTC_IER_HOUR_IE_Pos (1U)
  108. #define RTC_IER_HOUR_IE_Msk (0x1U << RTC_IER_HOUR_IE_Pos)
  109. #define RTC_IER_HOUR_IE RTC_IER_HOUR_IE_Msk
  110. #define RTC_IER_DAY_IE_Pos (0U)
  111. #define RTC_IER_DAY_IE_Msk (0x1U << RTC_IER_DAY_IE_Pos)
  112. #define RTC_IER_DAY_IE RTC_IER_DAY_IE_Msk
  113. #define RTC_ISR_ADJ_IF_Pos (12U)
  114. #define RTC_ISR_ADJ_IF_Msk (0x1U << RTC_ISR_ADJ_IF_Pos)
  115. #define RTC_ISR_ADJ_IF RTC_ISR_ADJ_IF_Msk
  116. #define RTC_ISR_ALARM_IF_Pos (11U)
  117. #define RTC_ISR_ALARM_IF_Msk (0x1U << RTC_ISR_ALARM_IF_Pos)
  118. #define RTC_ISR_ALARM_IF RTC_ISR_ALARM_IF_Msk
  119. #define RTC_ISR_1KHZ_IF_Pos (10U)
  120. #define RTC_ISR_1KHZ_IF_Msk (0x1U << RTC_ISR_1KHZ_IF_Pos)
  121. #define RTC_ISR_1KHZ_IF RTC_ISR_1KHZ_IF_Msk
  122. #define RTC_ISR_256HZ_IF_Pos (9U)
  123. #define RTC_ISR_256HZ_IF_Msk (0x1U << RTC_ISR_256HZ_IF_Pos)
  124. #define RTC_ISR_256HZ_IF RTC_ISR_256HZ_IF_Msk
  125. #define RTC_ISR_64HZ_IF_Pos (8U)
  126. #define RTC_ISR_64HZ_IF_Msk (0x1U << RTC_ISR_64HZ_IF_Pos)
  127. #define RTC_ISR_64HZ_IF RTC_ISR_64HZ_IF_Msk
  128. #define RTC_ISR_16HZ_IF_Pos (7U)
  129. #define RTC_ISR_16HZ_IF_Msk (0x1U << RTC_ISR_16HZ_IF_Pos)
  130. #define RTC_ISR_16HZ_IF RTC_ISR_16HZ_IF_Msk
  131. #define RTC_ISR_8HZ_IF_Pos (6U)
  132. #define RTC_ISR_8HZ_IF_Msk (0x1U << RTC_ISR_8HZ_IF_Pos)
  133. #define RTC_ISR_8HZ_IF RTC_ISR_8HZ_IF_Msk
  134. #define RTC_ISR_4HZ_IF_Pos (5U)
  135. #define RTC_ISR_4HZ_IF_Msk (0x1U << RTC_ISR_4HZ_IF_Pos)
  136. #define RTC_ISR_4HZ_IF RTC_ISR_4HZ_IF_Msk
  137. #define RTC_ISR_2HZ_IF_Pos (4U)
  138. #define RTC_ISR_2HZ_IF_Msk (0x1U << RTC_ISR_2HZ_IF_Pos)
  139. #define RTC_ISR_2HZ_IF RTC_ISR_2HZ_IF_Msk
  140. #define RTC_ISR_SEC_IF_Pos (3U)
  141. #define RTC_ISR_SEC_IF_Msk (0x1U << RTC_ISR_SEC_IF_Pos)
  142. #define RTC_ISR_SEC_IF RTC_ISR_SEC_IF_Msk
  143. #define RTC_ISR_MIN_IF_Pos (2U)
  144. #define RTC_ISR_MIN_IF_Msk (0x1U << RTC_ISR_MIN_IF_Pos)
  145. #define RTC_ISR_MIN_IF RTC_ISR_MIN_IF_Msk
  146. #define RTC_ISR_HOUR_IF_Pos (1U)
  147. #define RTC_ISR_HOUR_IF_Msk (0x1U << RTC_ISR_HOUR_IF_Pos)
  148. #define RTC_ISR_HOUR_IF RTC_ISR_HOUR_IF_Msk
  149. #define RTC_ISR_DAY_IF_Pos (0U)
  150. #define RTC_ISR_DAY_IF_Msk (0x1U << RTC_ISR_DAY_IF_Pos)
  151. #define RTC_ISR_DAY_IF RTC_ISR_DAY_IF_Msk
  152. #define RTC_TMSEL_TMSEL_Pos (0U)
  153. #define RTC_TMSEL_TMSEL_Msk (0xfU << RTC_TMSEL_TMSEL_Pos)
  154. #define RTC_TMSEL_TMSEL RTC_TMSEL_TMSEL_Msk
  155. #define RTC_ADSIGN_ADSIGN_Pos (0U)
  156. #define RTC_ADSIGN_ADSIGN_Msk (0x1U << RTC_ADSIGN_ADSIGN_Pos)
  157. #define RTC_ADSIGN_ADSIGN RTC_ADSIGN_ADSIGN_Msk
  158. #define FL_RTC_BACKUP_0 (0x0U)
  159. #define FL_RTC_BACKUP_1 (0x1U)
  160. #define FL_RTC_BACKUP_2 (0x2U)
  161. #define FL_RTC_BACKUP_3 (0x3U)
  162. #define FL_RTC_BACKUP_4 (0x4U)
  163. #define FL_RTC_BACKUP_5 (0x5U)
  164. #define FL_RTC_BACKUP_6 (0x6U)
  165. #define FL_RTC_BACKUP_7 (0x7U)
  166. #define FL_RTC_TIME_MARK_SECOND (0x2U << RTC_TMSEL_TMSEL_Pos)
  167. #define FL_RTC_TIME_MARK_MINUTE (0x3U << RTC_TMSEL_TMSEL_Pos)
  168. #define FL_RTC_TIME_MARK_HOUR (0x4U << RTC_TMSEL_TMSEL_Pos)
  169. #define FL_RTC_TIME_MARK_DAY (0x5U << RTC_TMSEL_TMSEL_Pos)
  170. #define FL_RTC_TIME_MARK_ALARM (0x6U << RTC_TMSEL_TMSEL_Pos)
  171. #define FL_RTC_TIME_MARK_32_SEC (0x7U << RTC_TMSEL_TMSEL_Pos)
  172. #define FL_RTC_TIME_MARK_SECOND_REVERSE (0x9U << RTC_TMSEL_TMSEL_Pos)
  173. #define FL_RTC_TIME_MARK_MINUTE_REVERSE (0xaU << RTC_TMSEL_TMSEL_Pos)
  174. #define FL_RTC_TIME_MARK_HOUR_REVERSE (0xbU << RTC_TMSEL_TMSEL_Pos)
  175. #define FL_RTC_TIME_MARK_DAY_REVERSE (0xcU << RTC_TMSEL_TMSEL_Pos)
  176. #define FL_RTC_TIME_MARK_ALARM_REVERSE (0xdU << RTC_TMSEL_TMSEL_Pos)
  177. #define FL_RTC_TIME_MARK_SEC (0xfU << RTC_TMSEL_TMSEL_Pos)
  178. #define FL_RTC_ADJUST_DIR_INCREASE (0x0U << RTC_ADSIGN_ADSIGN_Pos)
  179. #define FL_RTC_ADJUST_DIR_DECREASE (0x1U << RTC_ADSIGN_ADSIGN_Pos)
  180. /**
  181. * @}
  182. */
  183. /* Exported functions ---------------------------------------------------------------------------------*/
  184. /** @defgroup RTC_FL_Exported_Functions RTC Exported Functions
  185. * @{
  186. */
  187. /**
  188. * @brief Enable RTC Config Time
  189. * @rmtoll WER FL_RTC_WriteEnable
  190. * @param RTCx RTC instance
  191. * @retval None
  192. */
  193. __STATIC_INLINE void FL_RTC_WriteEnable(RTC_Type *RTCx)
  194. {
  195. RTCx->WER = 0xACACACAC;
  196. }
  197. /**
  198. * @brief Disable RTC Config Time
  199. * @rmtoll WER FL_RTC_WriteDisable
  200. * @param RTCx RTC instance
  201. * @retval None
  202. */
  203. __STATIC_INLINE void FL_RTC_WriteDisable(RTC_Type *RTCx)
  204. {
  205. RTCx->WER = 0x5A5A5A5A;
  206. }
  207. /**
  208. * @brief Enable RTC Time Adjust Interrupt
  209. * @rmtoll IER ADJ_IE FL_RTC_EnableIT_Adjust
  210. * @param RTCx RTC instance
  211. * @retval None
  212. */
  213. __STATIC_INLINE void FL_RTC_EnableIT_Adjust(RTC_Type *RTCx)
  214. {
  215. SET_BIT(RTCx->IER, RTC_IER_ADJ_IE_Msk);
  216. }
  217. /**
  218. * @brief Get RTC Time Adjust Interrupt Enable Status
  219. * @rmtoll IER ADJ_IE FL_RTC_IsEnabledIT_Adjust
  220. * @param RTCx RTC instance
  221. * @retval State of bit (1 or 0).
  222. */
  223. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_Adjust(RTC_Type *RTCx)
  224. {
  225. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_ADJ_IE_Msk) == RTC_IER_ADJ_IE_Msk);
  226. }
  227. /**
  228. * @brief Disable RTC Time Adjust Interrupt
  229. * @rmtoll IER ADJ_IE FL_RTC_DisableIT_Adjust
  230. * @param RTCx RTC instance
  231. * @retval None
  232. */
  233. __STATIC_INLINE void FL_RTC_DisableIT_Adjust(RTC_Type *RTCx)
  234. {
  235. CLEAR_BIT(RTCx->IER, RTC_IER_ADJ_IE_Msk);
  236. }
  237. /**
  238. * @brief Enable RTC Alarm Interrupt
  239. * @rmtoll IER ALARM_IE FL_RTC_EnableIT_Alarm
  240. * @param RTCx RTC instance
  241. * @retval None
  242. */
  243. __STATIC_INLINE void FL_RTC_EnableIT_Alarm(RTC_Type *RTCx)
  244. {
  245. SET_BIT(RTCx->IER, RTC_IER_ALARM_IE_Msk);
  246. }
  247. /**
  248. * @brief Get RTC Alarm Interrupt Enable Status
  249. * @rmtoll IER ALARM_IE FL_RTC_IsEnabledIT_Alarm
  250. * @param RTCx RTC instance
  251. * @retval State of bit (1 or 0).
  252. */
  253. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_Alarm(RTC_Type *RTCx)
  254. {
  255. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_ALARM_IE_Msk) == RTC_IER_ALARM_IE_Msk);
  256. }
  257. /**
  258. * @brief Disable RTC Alarm Interrupt
  259. * @rmtoll IER ALARM_IE FL_RTC_DisableIT_Alarm
  260. * @param RTCx RTC instance
  261. * @retval None
  262. */
  263. __STATIC_INLINE void FL_RTC_DisableIT_Alarm(RTC_Type *RTCx)
  264. {
  265. CLEAR_BIT(RTCx->IER, RTC_IER_ALARM_IE_Msk);
  266. }
  267. /**
  268. * @brief Enable RTC 1KHz Interrupt
  269. * @rmtoll IER 1KHZ_IE FL_RTC_EnableIT_1KHz
  270. * @param RTCx RTC instance
  271. * @retval None
  272. */
  273. __STATIC_INLINE void FL_RTC_EnableIT_1KHz(RTC_Type *RTCx)
  274. {
  275. SET_BIT(RTCx->IER, RTC_IER_1KHZ_IE_Msk);
  276. }
  277. /**
  278. * @brief Get RTC 1KHz Interrupt Enable Status
  279. * @rmtoll IER 1KHZ_IE FL_RTC_IsEnabledIT_1KHz
  280. * @param RTCx RTC instance
  281. * @retval State of bit (1 or 0).
  282. */
  283. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_1KHz(RTC_Type *RTCx)
  284. {
  285. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_1KHZ_IE_Msk) == RTC_IER_1KHZ_IE_Msk);
  286. }
  287. /**
  288. * @brief Disable RTC 1KHz Interrupt
  289. * @rmtoll IER 1KHZ_IE FL_RTC_DisableIT_1KHz
  290. * @param RTCx RTC instance
  291. * @retval None
  292. */
  293. __STATIC_INLINE void FL_RTC_DisableIT_1KHz(RTC_Type *RTCx)
  294. {
  295. CLEAR_BIT(RTCx->IER, RTC_IER_1KHZ_IE_Msk);
  296. }
  297. /**
  298. * @brief Enable RTC 256Hz Interrupt
  299. * @rmtoll IER 256HZ_IE FL_RTC_EnableIT_256Hz
  300. * @param RTCx RTC instance
  301. * @retval None
  302. */
  303. __STATIC_INLINE void FL_RTC_EnableIT_256Hz(RTC_Type *RTCx)
  304. {
  305. SET_BIT(RTCx->IER, RTC_IER_256HZ_IE_Msk);
  306. }
  307. /**
  308. * @brief Get RTC 256Hz Interrupt Enable Status
  309. * @rmtoll IER 256HZ_IE FL_RTC_IsEnabledIT_256Hz
  310. * @param RTCx RTC instance
  311. * @retval State of bit (1 or 0).
  312. */
  313. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_256Hz(RTC_Type *RTCx)
  314. {
  315. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_256HZ_IE_Msk) == RTC_IER_256HZ_IE_Msk);
  316. }
  317. /**
  318. * @brief Disable RTC 256Hz Interrupt
  319. * @rmtoll IER 256HZ_IE FL_RTC_DisableIT_256Hz
  320. * @param RTCx RTC instance
  321. * @retval None
  322. */
  323. __STATIC_INLINE void FL_RTC_DisableIT_256Hz(RTC_Type *RTCx)
  324. {
  325. CLEAR_BIT(RTCx->IER, RTC_IER_256HZ_IE_Msk);
  326. }
  327. /**
  328. * @brief Enable RTC 64Hz Interrupt
  329. * @rmtoll IER 64HZ_IE FL_RTC_EnableIT_64Hz
  330. * @param RTCx RTC instance
  331. * @retval None
  332. */
  333. __STATIC_INLINE void FL_RTC_EnableIT_64Hz(RTC_Type *RTCx)
  334. {
  335. SET_BIT(RTCx->IER, RTC_IER_64HZ_IE_Msk);
  336. }
  337. /**
  338. * @brief Get RTC 64Hz Interrupt Enable Status
  339. * @rmtoll IER 64HZ_IE FL_RTC_IsEnabledIT_64Hz
  340. * @param RTCx RTC instance
  341. * @retval State of bit (1 or 0).
  342. */
  343. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_64Hz(RTC_Type *RTCx)
  344. {
  345. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_64HZ_IE_Msk) == RTC_IER_64HZ_IE_Msk);
  346. }
  347. /**
  348. * @brief Disable RTC 64Hz Interrupt
  349. * @rmtoll IER 64HZ_IE FL_RTC_DisableIT_64Hz
  350. * @param RTCx RTC instance
  351. * @retval None
  352. */
  353. __STATIC_INLINE void FL_RTC_DisableIT_64Hz(RTC_Type *RTCx)
  354. {
  355. CLEAR_BIT(RTCx->IER, RTC_IER_64HZ_IE_Msk);
  356. }
  357. /**
  358. * @brief Enable RTC 16Hz Interrupt
  359. * @rmtoll IER 16HZ_IE FL_RTC_EnableIT_16Hz
  360. * @param RTCx RTC instance
  361. * @retval None
  362. */
  363. __STATIC_INLINE void FL_RTC_EnableIT_16Hz(RTC_Type *RTCx)
  364. {
  365. SET_BIT(RTCx->IER, RTC_IER_16HZ_IE_Msk);
  366. }
  367. /**
  368. * @brief Get RTC 16Hz Interrupt Enable Status
  369. * @rmtoll IER 16HZ_IE FL_RTC_IsEnabledIT_16Hz
  370. * @param RTCx RTC instance
  371. * @retval State of bit (1 or 0).
  372. */
  373. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_16Hz(RTC_Type *RTCx)
  374. {
  375. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_16HZ_IE_Msk) == RTC_IER_16HZ_IE_Msk);
  376. }
  377. /**
  378. * @brief Disable RTC 16Hz Interrupt
  379. * @rmtoll IER 16HZ_IE FL_RTC_DisableIT_16Hz
  380. * @param RTCx RTC instance
  381. * @retval None
  382. */
  383. __STATIC_INLINE void FL_RTC_DisableIT_16Hz(RTC_Type *RTCx)
  384. {
  385. CLEAR_BIT(RTCx->IER, RTC_IER_16HZ_IE_Msk);
  386. }
  387. /**
  388. * @brief Enable RTC 8Hz Interrupt
  389. * @rmtoll IER 8HZ_IE FL_RTC_EnableIT_8Hz
  390. * @param RTCx RTC instance
  391. * @retval None
  392. */
  393. __STATIC_INLINE void FL_RTC_EnableIT_8Hz(RTC_Type *RTCx)
  394. {
  395. SET_BIT(RTCx->IER, RTC_IER_8HZ_IE_Msk);
  396. }
  397. /**
  398. * @brief Get RTC 8Hz Interrupt Enable Status
  399. * @rmtoll IER 8HZ_IE FL_RTC_IsEnabledIT_8Hz
  400. * @param RTCx RTC instance
  401. * @retval State of bit (1 or 0).
  402. */
  403. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_8Hz(RTC_Type *RTCx)
  404. {
  405. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_8HZ_IE_Msk) == RTC_IER_8HZ_IE_Msk);
  406. }
  407. /**
  408. * @brief Disable RTC 8Hz Interrupt
  409. * @rmtoll IER 8HZ_IE FL_RTC_DisableIT_8Hz
  410. * @param RTCx RTC instance
  411. * @retval None
  412. */
  413. __STATIC_INLINE void FL_RTC_DisableIT_8Hz(RTC_Type *RTCx)
  414. {
  415. CLEAR_BIT(RTCx->IER, RTC_IER_8HZ_IE_Msk);
  416. }
  417. /**
  418. * @brief Enable RTC 4Hz Interrupt
  419. * @rmtoll IER 4HZ_IE FL_RTC_EnableIT_4Hz
  420. * @param RTCx RTC instance
  421. * @retval None
  422. */
  423. __STATIC_INLINE void FL_RTC_EnableIT_4Hz(RTC_Type *RTCx)
  424. {
  425. SET_BIT(RTCx->IER, RTC_IER_4HZ_IE_Msk);
  426. }
  427. /**
  428. * @brief Get RTC 4Hz Interrupt Enable Status
  429. * @rmtoll IER 4HZ_IE FL_RTC_IsEnabledIT_4Hz
  430. * @param RTCx RTC instance
  431. * @retval State of bit (1 or 0).
  432. */
  433. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_4Hz(RTC_Type *RTCx)
  434. {
  435. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_4HZ_IE_Msk) == RTC_IER_4HZ_IE_Msk);
  436. }
  437. /**
  438. * @brief Disable RTC 4Hz Interrupt
  439. * @rmtoll IER 4HZ_IE FL_RTC_DisableIT_4Hz
  440. * @param RTCx RTC instance
  441. * @retval None
  442. */
  443. __STATIC_INLINE void FL_RTC_DisableIT_4Hz(RTC_Type *RTCx)
  444. {
  445. CLEAR_BIT(RTCx->IER, RTC_IER_4HZ_IE_Msk);
  446. }
  447. /**
  448. * @brief Enable RTC 2Hz Interrupt
  449. * @rmtoll IER 2HZ_IE FL_RTC_EnableIT_2Hz
  450. * @param RTCx RTC instance
  451. * @retval None
  452. */
  453. __STATIC_INLINE void FL_RTC_EnableIT_2Hz(RTC_Type *RTCx)
  454. {
  455. SET_BIT(RTCx->IER, RTC_IER_2HZ_IE_Msk);
  456. }
  457. /**
  458. * @brief Get RTC 2Hz Interrupt Enable Status
  459. * @rmtoll IER 2HZ_IE FL_RTC_IsEnabledIT_2Hz
  460. * @param RTCx RTC instance
  461. * @retval State of bit (1 or 0).
  462. */
  463. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_2Hz(RTC_Type *RTCx)
  464. {
  465. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_2HZ_IE_Msk) == RTC_IER_2HZ_IE_Msk);
  466. }
  467. /**
  468. * @brief Disable RTC 2Hz Interrupt
  469. * @rmtoll IER 2HZ_IE FL_RTC_DisableIT_2Hz
  470. * @param RTCx RTC instance
  471. * @retval None
  472. */
  473. __STATIC_INLINE void FL_RTC_DisableIT_2Hz(RTC_Type *RTCx)
  474. {
  475. CLEAR_BIT(RTCx->IER, RTC_IER_2HZ_IE_Msk);
  476. }
  477. /**
  478. * @brief Enable RTC Second Interrupt
  479. * @rmtoll IER SEC_IE FL_RTC_EnableIT_Second
  480. * @param RTCx RTC instance
  481. * @retval None
  482. */
  483. __STATIC_INLINE void FL_RTC_EnableIT_Second(RTC_Type *RTCx)
  484. {
  485. SET_BIT(RTCx->IER, RTC_IER_SEC_IE_Msk);
  486. }
  487. /**
  488. * @brief Get RTC Second Interrupt Enable Status
  489. * @rmtoll IER SEC_IE FL_RTC_IsEnabledIT_Second
  490. * @param RTCx RTC instance
  491. * @retval State of bit (1 or 0).
  492. */
  493. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_Second(RTC_Type *RTCx)
  494. {
  495. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_SEC_IE_Msk) == RTC_IER_SEC_IE_Msk);
  496. }
  497. /**
  498. * @brief Disable RTC Second Interrupt
  499. * @rmtoll IER SEC_IE FL_RTC_DisableIT_Second
  500. * @param RTCx RTC instance
  501. * @retval None
  502. */
  503. __STATIC_INLINE void FL_RTC_DisableIT_Second(RTC_Type *RTCx)
  504. {
  505. CLEAR_BIT(RTCx->IER, RTC_IER_SEC_IE_Msk);
  506. }
  507. /**
  508. * @brief Enable RTC Minute Interrupt
  509. * @rmtoll IER MIN_IE FL_RTC_EnableIT_Minute
  510. * @param RTCx RTC instance
  511. * @retval None
  512. */
  513. __STATIC_INLINE void FL_RTC_EnableIT_Minute(RTC_Type *RTCx)
  514. {
  515. SET_BIT(RTCx->IER, RTC_IER_MIN_IE_Msk);
  516. }
  517. /**
  518. * @brief Get RTC Minute Interrupt Enable Status
  519. * @rmtoll IER MIN_IE FL_RTC_IsEnabledIT_Minute
  520. * @param RTCx RTC instance
  521. * @retval State of bit (1 or 0).
  522. */
  523. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_Minute(RTC_Type *RTCx)
  524. {
  525. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_MIN_IE_Msk) == RTC_IER_MIN_IE_Msk);
  526. }
  527. /**
  528. * @brief Disable RTC Minute Interrupt
  529. * @rmtoll IER MIN_IE FL_RTC_DisableIT_Minute
  530. * @param RTCx RTC instance
  531. * @retval None
  532. */
  533. __STATIC_INLINE void FL_RTC_DisableIT_Minute(RTC_Type *RTCx)
  534. {
  535. CLEAR_BIT(RTCx->IER, RTC_IER_MIN_IE_Msk);
  536. }
  537. /**
  538. * @brief Enable RTC Hour Interrupt
  539. * @rmtoll IER HOUR_IE FL_RTC_EnableIT_Hour
  540. * @param RTCx RTC instance
  541. * @retval None
  542. */
  543. __STATIC_INLINE void FL_RTC_EnableIT_Hour(RTC_Type *RTCx)
  544. {
  545. SET_BIT(RTCx->IER, RTC_IER_HOUR_IE_Msk);
  546. }
  547. /**
  548. * @brief Get RTC Hour Interrupt Enable Status
  549. * @rmtoll IER HOUR_IE FL_RTC_IsEnabledIT_Hour
  550. * @param RTCx RTC instance
  551. * @retval State of bit (1 or 0).
  552. */
  553. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_Hour(RTC_Type *RTCx)
  554. {
  555. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_HOUR_IE_Msk) == RTC_IER_HOUR_IE_Msk);
  556. }
  557. /**
  558. * @brief Disable RTC Hour Interrupt
  559. * @rmtoll IER HOUR_IE FL_RTC_DisableIT_Hour
  560. * @param RTCx RTC instance
  561. * @retval None
  562. */
  563. __STATIC_INLINE void FL_RTC_DisableIT_Hour(RTC_Type *RTCx)
  564. {
  565. CLEAR_BIT(RTCx->IER, RTC_IER_HOUR_IE_Msk);
  566. }
  567. /**
  568. * @brief Enable RTC Day Interrupt
  569. * @rmtoll IER DAY_IE FL_RTC_EnableIT_Day
  570. * @param RTCx RTC instance
  571. * @retval None
  572. */
  573. __STATIC_INLINE void FL_RTC_EnableIT_Day(RTC_Type *RTCx)
  574. {
  575. SET_BIT(RTCx->IER, RTC_IER_DAY_IE_Msk);
  576. }
  577. /**
  578. * @brief Get RTC Day Interrupt Enable Status
  579. * @rmtoll IER DAY_IE FL_RTC_IsEnabledIT_Day
  580. * @param RTCx RTC instance
  581. * @retval State of bit (1 or 0).
  582. */
  583. __STATIC_INLINE uint32_t FL_RTC_IsEnabledIT_Day(RTC_Type *RTCx)
  584. {
  585. return (uint32_t)(READ_BIT(RTCx->IER, RTC_IER_DAY_IE_Msk) == RTC_IER_DAY_IE_Msk);
  586. }
  587. /**
  588. * @brief Disable RTC Day Interrupt
  589. * @rmtoll IER DAY_IE FL_RTC_DisableIT_Day
  590. * @param RTCx RTC instance
  591. * @retval None
  592. */
  593. __STATIC_INLINE void FL_RTC_DisableIT_Day(RTC_Type *RTCx)
  594. {
  595. CLEAR_BIT(RTCx->IER, RTC_IER_DAY_IE_Msk);
  596. }
  597. /**
  598. * @brief Clear RTC Time Adjust Interrupt Flag
  599. * @rmtoll ISR ADJ_IF FL_RTC_ClearFlag_Adjust
  600. * @param RTCx RTC instance
  601. * @retval None
  602. */
  603. __STATIC_INLINE void FL_RTC_ClearFlag_Adjust(RTC_Type *RTCx)
  604. {
  605. WRITE_REG(RTCx->ISR, RTC_ISR_ADJ_IF_Msk);
  606. }
  607. /**
  608. * @brief Get RTC Time Adjust Interrupt Flag
  609. * @rmtoll ISR ADJ_IF FL_RTC_IsActiveFlag_Adjust
  610. * @param RTCx RTC instance
  611. * @retval State of bit (1 or 0).
  612. */
  613. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_Adjust(RTC_Type *RTCx)
  614. {
  615. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_ADJ_IF_Msk) == (RTC_ISR_ADJ_IF_Msk));
  616. }
  617. /**
  618. * @brief Clear RTC Alarm Interrupt Flag
  619. * @rmtoll ISR ALARM_IF FL_RTC_ClearFlag_Alarm
  620. * @param RTCx RTC instance
  621. * @retval None
  622. */
  623. __STATIC_INLINE void FL_RTC_ClearFlag_Alarm(RTC_Type *RTCx)
  624. {
  625. WRITE_REG(RTCx->ISR, RTC_ISR_ALARM_IF_Msk);
  626. }
  627. /**
  628. * @brief Get RTC Alarm Interrupt Flag
  629. * @rmtoll ISR ALARM_IF FL_RTC_IsActiveFlag_Alarm
  630. * @param RTCx RTC instance
  631. * @retval State of bit (1 or 0).
  632. */
  633. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_Alarm(RTC_Type *RTCx)
  634. {
  635. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_ALARM_IF_Msk) == (RTC_ISR_ALARM_IF_Msk));
  636. }
  637. /**
  638. * @brief Clear RTC 1KHz Interrupt Flag
  639. * @rmtoll ISR 1KHZ_IF FL_RTC_ClearFlag_1KHz
  640. * @param RTCx RTC instance
  641. * @retval None
  642. */
  643. __STATIC_INLINE void FL_RTC_ClearFlag_1KHz(RTC_Type *RTCx)
  644. {
  645. WRITE_REG(RTCx->ISR, RTC_ISR_1KHZ_IF_Msk);
  646. }
  647. /**
  648. * @brief Get RTC 1KHz Interrupt Flag
  649. * @rmtoll ISR 1KHZ_IF FL_RTC_IsActiveFlag_1KHz
  650. * @param RTCx RTC instance
  651. * @retval State of bit (1 or 0).
  652. */
  653. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_1KHz(RTC_Type *RTCx)
  654. {
  655. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_1KHZ_IF_Msk) == (RTC_ISR_1KHZ_IF_Msk));
  656. }
  657. /**
  658. * @brief Clear RTC 256Hz Interrupt Flag
  659. * @rmtoll ISR 256HZ_IF FL_RTC_ClearFlag_256Hz
  660. * @param RTCx RTC instance
  661. * @retval None
  662. */
  663. __STATIC_INLINE void FL_RTC_ClearFlag_256Hz(RTC_Type *RTCx)
  664. {
  665. WRITE_REG(RTCx->ISR, RTC_ISR_256HZ_IF_Msk);
  666. }
  667. /**
  668. * @brief Get RTC 256Hz Interrupt Flag
  669. * @rmtoll ISR 256HZ_IF FL_RTC_IsActiveFlag_256Hz
  670. * @param RTCx RTC instance
  671. * @retval State of bit (1 or 0).
  672. */
  673. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_256Hz(RTC_Type *RTCx)
  674. {
  675. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_256HZ_IF_Msk) == (RTC_ISR_256HZ_IF_Msk));
  676. }
  677. /**
  678. * @brief Clear RTC 64Hz Interrupt Flag
  679. * @rmtoll ISR 64HZ_IF FL_RTC_ClearFlag_64Hz
  680. * @param RTCx RTC instance
  681. * @retval None
  682. */
  683. __STATIC_INLINE void FL_RTC_ClearFlag_64Hz(RTC_Type *RTCx)
  684. {
  685. WRITE_REG(RTCx->ISR, RTC_ISR_64HZ_IF_Msk);
  686. }
  687. /**
  688. * @brief Get RTC 64Hz Interrupt Flag
  689. * @rmtoll ISR 64HZ_IF FL_RTC_IsActiveFlag_64Hz
  690. * @param RTCx RTC instance
  691. * @retval State of bit (1 or 0).
  692. */
  693. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_64Hz(RTC_Type *RTCx)
  694. {
  695. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_64HZ_IF_Msk) == (RTC_ISR_64HZ_IF_Msk));
  696. }
  697. /**
  698. * @brief Clear RTC 16Hz Interrupt Flag
  699. * @rmtoll ISR 16HZ_IF FL_RTC_ClearFlag_16Hz
  700. * @param RTCx RTC instance
  701. * @retval None
  702. */
  703. __STATIC_INLINE void FL_RTC_ClearFlag_16Hz(RTC_Type *RTCx)
  704. {
  705. WRITE_REG(RTCx->ISR, RTC_ISR_16HZ_IF_Msk);
  706. }
  707. /**
  708. * @brief Get RTC 16Hz Interrupt Flag
  709. * @rmtoll ISR 16HZ_IF FL_RTC_IsActiveFlag_16Hz
  710. * @param RTCx RTC instance
  711. * @retval State of bit (1 or 0).
  712. */
  713. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_16Hz(RTC_Type *RTCx)
  714. {
  715. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_16HZ_IF_Msk) == (RTC_ISR_16HZ_IF_Msk));
  716. }
  717. /**
  718. * @brief Clear RTC 8Hz Interrupt Flag
  719. * @rmtoll ISR 8HZ_IF FL_RTC_ClearFlag_8Hz
  720. * @param RTCx RTC instance
  721. * @retval None
  722. */
  723. __STATIC_INLINE void FL_RTC_ClearFlag_8Hz(RTC_Type *RTCx)
  724. {
  725. WRITE_REG(RTCx->ISR, RTC_ISR_8HZ_IF_Msk);
  726. }
  727. /**
  728. * @brief Get RTC 8Hz Interrupt Flag
  729. * @rmtoll ISR 8HZ_IF FL_RTC_IsActiveFlag_8Hz
  730. * @param RTCx RTC instance
  731. * @retval State of bit (1 or 0).
  732. */
  733. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_8Hz(RTC_Type *RTCx)
  734. {
  735. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_8HZ_IF_Msk) == (RTC_ISR_8HZ_IF_Msk));
  736. }
  737. /**
  738. * @brief Clear RTC 4Hz Interrupt Flag
  739. * @rmtoll ISR 4HZ_IF FL_RTC_ClearFlag_4Hz
  740. * @param RTCx RTC instance
  741. * @retval None
  742. */
  743. __STATIC_INLINE void FL_RTC_ClearFlag_4Hz(RTC_Type *RTCx)
  744. {
  745. WRITE_REG(RTCx->ISR, RTC_ISR_4HZ_IF_Msk);
  746. }
  747. /**
  748. * @brief Get RTC 4Hz Interrupt Flag
  749. * @rmtoll ISR 4HZ_IF FL_RTC_IsActiveFlag_4Hz
  750. * @param RTCx RTC instance
  751. * @retval State of bit (1 or 0).
  752. */
  753. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_4Hz(RTC_Type *RTCx)
  754. {
  755. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_4HZ_IF_Msk) == (RTC_ISR_4HZ_IF_Msk));
  756. }
  757. /**
  758. * @brief Clear RTC 2Hz Interrupt Flag
  759. * @rmtoll ISR 2HZ_IF FL_RTC_ClearFlag_2Hz
  760. * @param RTCx RTC instance
  761. * @retval None
  762. */
  763. __STATIC_INLINE void FL_RTC_ClearFlag_2Hz(RTC_Type *RTCx)
  764. {
  765. WRITE_REG(RTCx->ISR, RTC_ISR_2HZ_IF_Msk);
  766. }
  767. /**
  768. * @brief Get RTC 2Hz Interrupt Flag
  769. * @rmtoll ISR 2HZ_IF FL_RTC_IsActiveFlag_2Hz
  770. * @param RTCx RTC instance
  771. * @retval State of bit (1 or 0).
  772. */
  773. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_2Hz(RTC_Type *RTCx)
  774. {
  775. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_2HZ_IF_Msk) == (RTC_ISR_2HZ_IF_Msk));
  776. }
  777. /**
  778. * @brief Clear RTC Second Interrupt Flag
  779. * @rmtoll ISR SEC_IF FL_RTC_ClearFlag_Second
  780. * @param RTCx RTC instance
  781. * @retval None
  782. */
  783. __STATIC_INLINE void FL_RTC_ClearFlag_Second(RTC_Type *RTCx)
  784. {
  785. WRITE_REG(RTCx->ISR, RTC_ISR_SEC_IF_Msk);
  786. }
  787. /**
  788. * @brief Get RTC Second Interrupt Flag
  789. * @rmtoll ISR SEC_IF FL_RTC_IsActiveFlag_Second
  790. * @param RTCx RTC instance
  791. * @retval State of bit (1 or 0).
  792. */
  793. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_Second(RTC_Type *RTCx)
  794. {
  795. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_SEC_IF_Msk) == (RTC_ISR_SEC_IF_Msk));
  796. }
  797. /**
  798. * @brief Clear RTC Minute Interrupt Flag
  799. * @rmtoll ISR MIN_IF FL_RTC_ClearFlag_Minute
  800. * @param RTCx RTC instance
  801. * @retval None
  802. */
  803. __STATIC_INLINE void FL_RTC_ClearFlag_Minute(RTC_Type *RTCx)
  804. {
  805. WRITE_REG(RTCx->ISR, RTC_ISR_MIN_IF_Msk);
  806. }
  807. /**
  808. * @brief Get RTC Minute Interrupt Flag
  809. * @rmtoll ISR MIN_IF FL_RTC_IsActiveFlag_Minute
  810. * @param RTCx RTC instance
  811. * @retval State of bit (1 or 0).
  812. */
  813. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_Minute(RTC_Type *RTCx)
  814. {
  815. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_MIN_IF_Msk) == (RTC_ISR_MIN_IF_Msk));
  816. }
  817. /**
  818. * @brief Clear RTC Hour Interrupt Flag
  819. * @rmtoll ISR HOUR_IF FL_RTC_ClearFlag_Hour
  820. * @param RTCx RTC instance
  821. * @retval None
  822. */
  823. __STATIC_INLINE void FL_RTC_ClearFlag_Hour(RTC_Type *RTCx)
  824. {
  825. WRITE_REG(RTCx->ISR, RTC_ISR_HOUR_IF_Msk);
  826. }
  827. /**
  828. * @brief Get RTC Hour Interrupt Flag
  829. * @rmtoll ISR HOUR_IF FL_RTC_IsActiveFlag_Hour
  830. * @param RTCx RTC instance
  831. * @retval State of bit (1 or 0).
  832. */
  833. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_Hour(RTC_Type *RTCx)
  834. {
  835. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_HOUR_IF_Msk) == (RTC_ISR_HOUR_IF_Msk));
  836. }
  837. /**
  838. * @brief Clear RTC Day Interrupt Flag
  839. * @rmtoll ISR DAY_IF FL_RTC_ClearFlag_Day
  840. * @param RTCx RTC instance
  841. * @retval None
  842. */
  843. __STATIC_INLINE void FL_RTC_ClearFlag_Day(RTC_Type *RTCx)
  844. {
  845. WRITE_REG(RTCx->ISR, RTC_ISR_DAY_IF_Msk);
  846. }
  847. /**
  848. * @brief Get RTC Day Interrupt Flag
  849. * @rmtoll ISR DAY_IF FL_RTC_IsActiveFlag_Day
  850. * @param RTCx RTC instance
  851. * @retval State of bit (1 or 0).
  852. */
  853. __STATIC_INLINE uint32_t FL_RTC_IsActiveFlag_Day(RTC_Type *RTCx)
  854. {
  855. return (uint32_t)(READ_BIT(RTCx->ISR, RTC_ISR_DAY_IF_Msk) == (RTC_ISR_DAY_IF_Msk));
  856. }
  857. /**
  858. * @brief Get RTC Second Value
  859. * @rmtoll BCDSEC FL_RTC_ReadSecond
  860. * @param RTCx RTC instance
  861. * @retval
  862. */
  863. __STATIC_INLINE uint32_t FL_RTC_ReadSecond(RTC_Type *RTCx)
  864. {
  865. return (uint32_t)(READ_BIT(RTCx->BCDSEC, (0x7fU << 0U)) >> 0U);
  866. }
  867. /**
  868. * @brief Set RTC Second Value
  869. * @rmtoll BCDSEC FL_RTC_WriteSecond
  870. * @param RTCx RTC instance
  871. * @param second
  872. * @retval None
  873. */
  874. __STATIC_INLINE void FL_RTC_WriteSecond(RTC_Type *RTCx, uint32_t second)
  875. {
  876. MODIFY_REG(RTCx->BCDSEC, (0x7fU << 0U), (second << 0U));
  877. }
  878. /**
  879. * @brief Get RTC Minute Value
  880. * @rmtoll BCDMIN FL_RTC_ReadMinute
  881. * @param RTCx RTC instance
  882. * @retval
  883. */
  884. __STATIC_INLINE uint32_t FL_RTC_ReadMinute(RTC_Type *RTCx)
  885. {
  886. return (uint32_t)(READ_BIT(RTCx->BCDMIN, (0x7fU << 0U)) >> 0U);
  887. }
  888. /**
  889. * @brief Set RTC Minute Value
  890. * @rmtoll BCDMIN FL_RTC_WriteMinute
  891. * @param RTCx RTC instance
  892. * @param minute
  893. * @retval None
  894. */
  895. __STATIC_INLINE void FL_RTC_WriteMinute(RTC_Type *RTCx, uint32_t minute)
  896. {
  897. MODIFY_REG(RTCx->BCDMIN, (0x7fU << 0U), (minute << 0U));
  898. }
  899. /**
  900. * @brief Get RTC Hour Value
  901. * @rmtoll BCDHOUR FL_RTC_ReadHour
  902. * @param RTCx RTC instance
  903. * @retval
  904. */
  905. __STATIC_INLINE uint32_t FL_RTC_ReadHour(RTC_Type *RTCx)
  906. {
  907. return (uint32_t)(READ_BIT(RTCx->BCDHOUR, (0x3fU << 0U)) >> 0U);
  908. }
  909. /**
  910. * @brief Set RTC Hour Value
  911. * @rmtoll BCDHOUR FL_RTC_WriteHour
  912. * @param RTCx RTC instance
  913. * @param hour
  914. * @retval None
  915. */
  916. __STATIC_INLINE void FL_RTC_WriteHour(RTC_Type *RTCx, uint32_t hour)
  917. {
  918. MODIFY_REG(RTCx->BCDHOUR, (0x3fU << 0U), (hour << 0U));
  919. }
  920. /**
  921. * @brief Get RTC Day Value
  922. * @rmtoll BCDDAY FL_RTC_ReadDay
  923. * @param RTCx RTC instance
  924. * @retval
  925. */
  926. __STATIC_INLINE uint32_t FL_RTC_ReadDay(RTC_Type *RTCx)
  927. {
  928. return (uint32_t)(READ_BIT(RTCx->BCDDAY, (0x3fU << 0U)) >> 0U);
  929. }
  930. /**
  931. * @brief Set RTC Day Value
  932. * @rmtoll BCDDAY FL_RTC_WriteDay
  933. * @param RTCx RTC instance
  934. * @param day
  935. * @retval None
  936. */
  937. __STATIC_INLINE void FL_RTC_WriteDay(RTC_Type *RTCx, uint32_t day)
  938. {
  939. MODIFY_REG(RTCx->BCDDAY, (0x3fU << 0U), (day << 0U));
  940. }
  941. /**
  942. * @brief Get RTC Week Value
  943. * @rmtoll BCDWEEK FL_RTC_ReadWeek
  944. * @param RTCx RTC instance
  945. * @retval
  946. */
  947. __STATIC_INLINE uint32_t FL_RTC_ReadWeek(RTC_Type *RTCx)
  948. {
  949. return (uint32_t)(READ_BIT(RTCx->BCDWEEK, (0x7U << 0U)) >> 0U);
  950. }
  951. /**
  952. * @brief Set RTC Week Value
  953. * @rmtoll BCDWEEK FL_RTC_WriteWeek
  954. * @param RTCx RTC instance
  955. * @param week
  956. * @retval None
  957. */
  958. __STATIC_INLINE void FL_RTC_WriteWeek(RTC_Type *RTCx, uint32_t week)
  959. {
  960. MODIFY_REG(RTCx->BCDWEEK, (0x7U << 0U), (week << 0U));
  961. }
  962. /**
  963. * @brief Get RTC Month Value
  964. * @rmtoll BCDMONTH FL_RTC_ReadMonth
  965. * @param RTCx RTC instance
  966. * @retval
  967. */
  968. __STATIC_INLINE uint32_t FL_RTC_ReadMonth(RTC_Type *RTCx)
  969. {
  970. return (uint32_t)(READ_BIT(RTCx->BCDMONTH, (0x1fU << 0U)) >> 0U);
  971. }
  972. /**
  973. * @brief Set RTC Month Value
  974. * @rmtoll BCDMONTH FL_RTC_WriteMonth
  975. * @param RTCx RTC instance
  976. * @param month
  977. * @retval None
  978. */
  979. __STATIC_INLINE void FL_RTC_WriteMonth(RTC_Type *RTCx, uint32_t month)
  980. {
  981. MODIFY_REG(RTCx->BCDMONTH, (0x1fU << 0U), (month << 0U));
  982. }
  983. /**
  984. * @brief Get RTC Year Value
  985. * @rmtoll BCDYEAR FL_RTC_ReadYear
  986. * @param RTCx RTC instance
  987. * @retval
  988. */
  989. __STATIC_INLINE uint32_t FL_RTC_ReadYear(RTC_Type *RTCx)
  990. {
  991. return (uint32_t)(READ_BIT(RTCx->BCDYEAR, (0xffU << 0U)) >> 0U);
  992. }
  993. /**
  994. * @brief Set RTC Year Value
  995. * @rmtoll BCDYEAR FL_RTC_WriteYear
  996. * @param RTCx RTC instance
  997. * @param year
  998. * @retval None
  999. */
  1000. __STATIC_INLINE void FL_RTC_WriteYear(RTC_Type *RTCx, uint32_t year)
  1001. {
  1002. MODIFY_REG(RTCx->BCDYEAR, (0xffU << 0U), (year << 0U));
  1003. }
  1004. /**
  1005. * @brief Get RTC Alarm Hour Value
  1006. * @rmtoll ALARM FL_RTC_ReadHourAlarm
  1007. * @param RTCx RTC instance
  1008. * @retval
  1009. */
  1010. __STATIC_INLINE uint32_t FL_RTC_ReadHourAlarm(RTC_Type *RTCx)
  1011. {
  1012. return (uint32_t)(READ_BIT(RTCx->ALARM, (0x3fU << 16U)) >> 16U);
  1013. }
  1014. /**
  1015. * @brief Set RTC Alarm Hour Value
  1016. * @rmtoll ALARM FL_RTC_WriteHourAlarm
  1017. * @param RTCx RTC instance
  1018. * @param hour
  1019. * @retval None
  1020. */
  1021. __STATIC_INLINE void FL_RTC_WriteHourAlarm(RTC_Type *RTCx, uint32_t hour)
  1022. {
  1023. MODIFY_REG(RTCx->ALARM, (0x3fU << 16U), (hour << 16U));
  1024. }
  1025. /**
  1026. * @brief Get RTC Alarm Minute Value
  1027. * @rmtoll ALARM FL_RTC_ReadMinuteAlarm
  1028. * @param RTCx RTC instance
  1029. * @retval
  1030. */
  1031. __STATIC_INLINE uint32_t FL_RTC_ReadMinuteAlarm(RTC_Type *RTCx)
  1032. {
  1033. return (uint32_t)(READ_BIT(RTCx->ALARM, (0x7fU << 8U)) >> 8U);
  1034. }
  1035. /**
  1036. * @brief Set RTC Alarm Minute Value
  1037. * @rmtoll ALARM FL_RTC_WriteMinuteAlarm
  1038. * @param RTCx RTC instance
  1039. * @param minute
  1040. * @retval None
  1041. */
  1042. __STATIC_INLINE void FL_RTC_WriteMinuteAlarm(RTC_Type *RTCx, uint32_t minute)
  1043. {
  1044. MODIFY_REG(RTCx->ALARM, (0x7fU << 8U), (minute << 8U));
  1045. }
  1046. /**
  1047. * @brief Get RTC Alarm Second Value
  1048. * @rmtoll ALARM FL_RTC_ReadSecondAlarm
  1049. * @param RTCx RTC instance
  1050. * @retval
  1051. */
  1052. __STATIC_INLINE uint32_t FL_RTC_ReadSecondAlarm(RTC_Type *RTCx)
  1053. {
  1054. return (uint32_t)(READ_BIT(RTCx->ALARM, (0x7fU << 0U)) >> 0U);
  1055. }
  1056. /**
  1057. * @brief Set RTC Alarm Second Value
  1058. * @rmtoll ALARM FL_RTC_WriteSecondAlarm
  1059. * @param RTCx RTC instance
  1060. * @param second
  1061. * @retval None
  1062. */
  1063. __STATIC_INLINE void FL_RTC_WriteSecondAlarm(RTC_Type *RTCx, uint32_t second)
  1064. {
  1065. MODIFY_REG(RTCx->ALARM, (0x7fU << 0U), (second << 0U));
  1066. }
  1067. /**
  1068. * @brief Set RTC Output Time Mark Signal
  1069. * @rmtoll TMSEL TMSEL FL_RTC_SetTimeMarkOutput
  1070. * @param RTCx RTC instance
  1071. * @param markSelect This parameter can be one of the following values:
  1072. * @arg @ref FL_RTC_TIME_MARK_SECOND
  1073. * @arg @ref FL_RTC_TIME_MARK_MINUTE
  1074. * @arg @ref FL_RTC_TIME_MARK_HOUR
  1075. * @arg @ref FL_RTC_TIME_MARK_DAY
  1076. * @arg @ref FL_RTC_TIME_MARK_ALARM
  1077. * @arg @ref FL_RTC_TIME_MARK_32_SEC
  1078. * @arg @ref FL_RTC_TIME_MARK_SECOND_REVERSE
  1079. * @arg @ref FL_RTC_TIME_MARK_MINUTE_REVERSE
  1080. * @arg @ref FL_RTC_TIME_MARK_HOUR_REVERSE
  1081. * @arg @ref FL_RTC_TIME_MARK_DAY_REVERSE
  1082. * @arg @ref FL_RTC_TIME_MARK_ALARM_REVERSE
  1083. * @arg @ref FL_RTC_TIME_MARK_SEC
  1084. * @retval None
  1085. */
  1086. __STATIC_INLINE void FL_RTC_SetTimeMarkOutput(RTC_Type *RTCx, uint32_t markSelect)
  1087. {
  1088. MODIFY_REG(RTCx->TMSEL, RTC_TMSEL_TMSEL_Msk, markSelect);
  1089. }
  1090. /**
  1091. * @brief Get RTC Output Time Mark Signal Setting
  1092. * @rmtoll TMSEL TMSEL FL_RTC_GetTimeMarkOutput
  1093. * @param RTCx RTC instance
  1094. * @retval Returned value can be one of the following values:
  1095. * @arg @ref FL_RTC_TIME_MARK_SECOND
  1096. * @arg @ref FL_RTC_TIME_MARK_MINUTE
  1097. * @arg @ref FL_RTC_TIME_MARK_HOUR
  1098. * @arg @ref FL_RTC_TIME_MARK_DAY
  1099. * @arg @ref FL_RTC_TIME_MARK_ALARM
  1100. * @arg @ref FL_RTC_TIME_MARK_32_SEC
  1101. * @arg @ref FL_RTC_TIME_MARK_SECOND_REVERSE
  1102. * @arg @ref FL_RTC_TIME_MARK_MINUTE_REVERSE
  1103. * @arg @ref FL_RTC_TIME_MARK_HOUR_REVERSE
  1104. * @arg @ref FL_RTC_TIME_MARK_DAY_REVERSE
  1105. * @arg @ref FL_RTC_TIME_MARK_ALARM_REVERSE
  1106. * @arg @ref FL_RTC_TIME_MARK_SEC
  1107. */
  1108. __STATIC_INLINE uint32_t FL_RTC_GetTimeMarkOutput(RTC_Type *RTCx)
  1109. {
  1110. return (uint32_t)(READ_BIT(RTCx->TMSEL, RTC_TMSEL_TMSEL_Msk));
  1111. }
  1112. /**
  1113. * @brief Get RTC Adjust Value
  1114. * @rmtoll ADJUST FL_RTC_ReadAdjustValue
  1115. * @param RTCx RTC instance
  1116. * @retval
  1117. */
  1118. __STATIC_INLINE uint32_t FL_RTC_ReadAdjustValue(RTC_Type *RTCx)
  1119. {
  1120. return (uint32_t)(READ_BIT(RTCx->ADJUST, (0x1ffU << 0U)) >> 0U);
  1121. }
  1122. /**
  1123. * @brief Set RTC Adjust Value
  1124. * @rmtoll ADJUST FL_RTC_WriteAdjustValue
  1125. * @param RTCx RTC instance
  1126. * @param adjustValue
  1127. * @retval None
  1128. */
  1129. __STATIC_INLINE void FL_RTC_WriteAdjustValue(RTC_Type *RTCx, uint32_t adjustValue)
  1130. {
  1131. MODIFY_REG(RTCx->ADJUST, (0x1ffU << 0U), (adjustValue << 0U));
  1132. }
  1133. /**
  1134. * @brief Set RTC Adjust Direction
  1135. * @rmtoll ADSIGN ADSIGN FL_RTC_SetAdjustDirection
  1136. * @param RTCx RTC instance
  1137. * @param adjustDir This parameter can be one of the following values:
  1138. * @arg @ref FL_RTC_ADJUST_DIR_INCREASE
  1139. * @arg @ref FL_RTC_ADJUST_DIR_DECREASE
  1140. * @retval None
  1141. */
  1142. __STATIC_INLINE void FL_RTC_SetAdjustDirection(RTC_Type *RTCx, uint32_t adjustDir)
  1143. {
  1144. MODIFY_REG(RTCx->ADSIGN, RTC_ADSIGN_ADSIGN_Msk, adjustDir);
  1145. }
  1146. /**
  1147. * @brief Get RTC Adjust Direction
  1148. * @rmtoll ADSIGN ADSIGN FL_RTC_GetAdjustDirection
  1149. * @param RTCx RTC instance
  1150. * @retval Returned value can be one of the following values:
  1151. * @arg @ref FL_RTC_ADJUST_DIR_INCREASE
  1152. * @arg @ref FL_RTC_ADJUST_DIR_DECREASE
  1153. */
  1154. __STATIC_INLINE uint32_t FL_RTC_GetAdjustDirection(RTC_Type *RTCx)
  1155. {
  1156. return (uint32_t)(READ_BIT(RTCx->ADSIGN, RTC_ADSIGN_ADSIGN_Msk));
  1157. }
  1158. /**
  1159. * @brief Get RTC MilliSecond Counter Value
  1160. * @rmtoll SBSCNT FL_RTC_ReadMilliSecondCounter
  1161. * @param RTCx RTC instance
  1162. * @retval
  1163. */
  1164. __STATIC_INLINE uint32_t FL_RTC_ReadMilliSecondCounter(RTC_Type *RTCx)
  1165. {
  1166. return (uint32_t)(READ_BIT(RTCx->SBSCNT, (0xffU << 0U)) >> 0U);
  1167. }
  1168. /**
  1169. * @brief Set RTC MilliSecond Counter Value
  1170. * @rmtoll SBSCNT FL_RTC_WriteMilliSecondCounter
  1171. * @param RTCx RTC instance
  1172. * @param milliSecondCount
  1173. * @retval None
  1174. */
  1175. __STATIC_INLINE void FL_RTC_WriteMilliSecondCounter(RTC_Type *RTCx, uint32_t milliSecondCount)
  1176. {
  1177. MODIFY_REG(RTCx->SBSCNT, (0xffU << 0U), (milliSecondCount << 0U));
  1178. }
  1179. /**
  1180. * @brief Get RTC Backup Register
  1181. * @rmtoll BACKUP FL_RTC_ReadBackupRegisters
  1182. * @param RTCx RTC instance
  1183. * @param backupRegNum This parameter can be one of the following values:
  1184. * @arg @ref FL_RTC_BACKUP_0
  1185. * @arg @ref FL_RTC_BACKUP_1
  1186. * @arg @ref FL_RTC_BACKUP_2
  1187. * @arg @ref FL_RTC_BACKUP_3
  1188. * @arg @ref FL_RTC_BACKUP_4
  1189. * @arg @ref FL_RTC_BACKUP_5
  1190. * @arg @ref FL_RTC_BACKUP_6
  1191. * @arg @ref FL_RTC_BACKUP_7
  1192. * @retval
  1193. */
  1194. __STATIC_INLINE uint32_t FL_RTC_ReadBackupRegisters(RTC_Type *RTCx, uint32_t backupRegNum)
  1195. {
  1196. FL_RTC_Backup_ADDR *addr = (FL_RTC_Backup_ADDR *)&RTCx->BKR0;
  1197. return (uint32_t)(READ_BIT(addr->backup[backupRegNum], 0xFFFFFFFFu));
  1198. }
  1199. /**
  1200. * @brief Set RTC Backup Register
  1201. * @rmtoll BACKUP FL_RTC_WriteBackupRegisters
  1202. * @param RTCx RTC instance
  1203. * @param backupReg
  1204. * @param backupNum
  1205. * @retval None
  1206. */
  1207. __STATIC_INLINE void FL_RTC_WriteBackupRegisters(RTC_Type *RTCx, uint32_t backupReg, uint32_t backupNum)
  1208. {
  1209. FL_RTC_Backup_ADDR *addr = (FL_RTC_Backup_ADDR *)&RTCx->BKR0;
  1210. MODIFY_REG(addr->backup[backupNum], (0xFFFFFFFFu), backupReg);
  1211. }
  1212. /**
  1213. * @}
  1214. */
  1215. /** @defgroup RTC_FL_EF_Init Initialization and de-initialization functions
  1216. * @{
  1217. */
  1218. FL_ErrorStatus FL_RTC_DeInit(RTC_Type *RTCx);
  1219. void FL_RTC_StructInit(FL_RTC_InitTypeDef *initStruct);
  1220. FL_ErrorStatus FL_RTC_GetTime(RTC_Type *RTCx, FL_RTC_InitTypeDef *initStruct);
  1221. FL_ErrorStatus FL_RTC_Init(RTC_Type *RTCx, FL_RTC_InitTypeDef *initStruct);
  1222. FL_ErrorStatus FL_RTC_ConfigTime(RTC_Type *RTCx, FL_RTC_InitTypeDef *initStruct);
  1223. /**
  1224. * @}
  1225. */
  1226. /**
  1227. * @}
  1228. */
  1229. /**
  1230. * @}
  1231. */
  1232. #ifdef __cplusplus
  1233. }
  1234. #endif
  1235. #endif /* __FM33LC0XX_FL_RTC_H*/
  1236. /*************************Py_Code_Generator Version: 0.1-0.11-0.1 @ 2020-09-22*************************/
  1237. /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/