fm33lc0xx_fl_pmu.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_pmu.h
  4. * @author FMSH Application Team
  5. * @brief Head file of PMU FL Module
  6. *******************************************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) [2019] [Fudan Microelectronics]
  10. * THIS SOFTWARE is licensed under the Mulan PSL v1.
  11. * can use this software according to the terms and conditions of the Mulan PSL v1.
  12. * You may obtain a copy of Mulan PSL v1 at:
  13. * http://license.coscl.org.cn/MulanPSL
  14. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
  16. * PURPOSE.
  17. * See the Mulan PSL v1 for more details.
  18. *
  19. *******************************************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion---------------------------------------------------------------*/
  22. #ifndef __FM33LC0XX_FL_PMU_H
  23. #define __FM33LC0XX_FL_PMU_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes -------------------------------------------------------------------------------------------*/
  28. #include "fm33lc0xx_fl.h"
  29. /** @addtogroup FM33LC0XX_FL_Driver
  30. * @{
  31. */
  32. /** @defgroup PMU PMU
  33. * @brief PMU FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup PMU_FL_ES_INIT PMU Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief PMU Init Sturcture definition
  42. */
  43. typedef struct
  44. {
  45. /*! 低功耗模式下内核电压降低与否 */
  46. FL_FunState coreVoltageScaling;
  47. /*! 睡眠模式配置 */
  48. uint32_t deepSleep;
  49. /*! 唤醒后的系统频率,仅对RCHF */
  50. uint32_t wakeupFrequency;
  51. /*! 芯片LDO是否进入低功耗 */
  52. uint32_t LDOLowPowerMode;
  53. /*! 额外唤醒延迟 */
  54. uint32_t wakeupDelay;
  55. } FL_PMU_SleepInitTypeDef;
  56. /**
  57. * @}
  58. */
  59. /* Exported constants ---------------------------------------------------------------------------------*/
  60. /** @defgroup PMU_FL_Exported_Constants PMU Exported Constants
  61. * @{
  62. */
  63. #define PMU_CR_LDO_LPM_Pos (18U)
  64. #define PMU_CR_LDO_LPM_Msk (0x3U << PMU_CR_LDO_LPM_Pos)
  65. #define PMU_CR_LDO_LPM PMU_CR_LDO_LPM_Msk
  66. #define PMU_CR_LDO15EN_Pos (17U)
  67. #define PMU_CR_LDO15EN_Msk (0x1U << PMU_CR_LDO15EN_Pos)
  68. #define PMU_CR_LDO15EN PMU_CR_LDO15EN_Msk
  69. #define PMU_CR_LDO15EN_B_Pos (16U)
  70. #define PMU_CR_LDO15EN_B_Msk (0x1U << PMU_CR_LDO15EN_B_Pos)
  71. #define PMU_CR_LDO15EN_B PMU_CR_LDO15EN_B_Msk
  72. #define PMU_CR_WKFSEL_Pos (10U)
  73. #define PMU_CR_WKFSEL_Msk (0x3U << PMU_CR_WKFSEL_Pos)
  74. #define PMU_CR_WKFSEL PMU_CR_WKFSEL_Msk
  75. #define PMU_CR_SLPDP_Pos (9U)
  76. #define PMU_CR_SLPDP_Msk (0x1U << PMU_CR_SLPDP_Pos)
  77. #define PMU_CR_SLPDP PMU_CR_SLPDP_Msk
  78. #define PMU_CR_CVS_Pos (8U)
  79. #define PMU_CR_CVS_Msk (0x1U << PMU_CR_CVS_Pos)
  80. #define PMU_CR_CVS PMU_CR_CVS_Msk
  81. #define PMU_CR_PMOD_Pos (0U)
  82. #define PMU_CR_PMOD_Msk (0x3U << PMU_CR_PMOD_Pos)
  83. #define PMU_CR_PMOD PMU_CR_PMOD_Msk
  84. #define PMU_WKTR_STPCLR_Pos (2U)
  85. #define PMU_WKTR_STPCLR_Msk (0x1U << PMU_WKTR_STPCLR_Pos)
  86. #define PMU_WKTR_STPCLR PMU_WKTR_STPCLR_Msk
  87. #define PMU_WKTR_T1A_Pos (0U)
  88. #define PMU_WKTR_T1A_Msk (0x3U << PMU_WKTR_T1A_Pos)
  89. #define PMU_WKTR_T1A PMU_WKTR_T1A_Msk
  90. #define PMU_WKFR_ADCWKF_Pos (31U)
  91. #define PMU_WKFR_ADCWKF_Msk (0x1U << PMU_WKFR_ADCWKF_Pos)
  92. #define PMU_WKFR_ADCWKF PMU_WKFR_ADCWKF_Msk
  93. #define PMU_WKFR_RTCWKF_Pos (28U)
  94. #define PMU_WKFR_RTCWKF_Msk (0x1U << PMU_WKFR_RTCWKF_Pos)
  95. #define PMU_WKFR_RTCWKF PMU_WKFR_RTCWKF_Msk
  96. #define PMU_WKFR_SVDWKF_Pos (27U)
  97. #define PMU_WKFR_SVDWKF_Msk (0x1U << PMU_WKFR_SVDWKF_Pos)
  98. #define PMU_WKFR_SVDWKF PMU_WKFR_SVDWKF_Msk
  99. #define PMU_WKFR_LFDETWKF_Pos (26U)
  100. #define PMU_WKFR_LFDETWKF_Msk (0x1U << PMU_WKFR_LFDETWKF_Pos)
  101. #define PMU_WKFR_LFDETWKF PMU_WKFR_LFDETWKF_Msk
  102. #define PMU_WKFR_VREFWKF_Pos (25U)
  103. #define PMU_WKFR_VREFWKF_Msk (0x1U << PMU_WKFR_VREFWKF_Pos)
  104. #define PMU_WKFR_VREFWKF PMU_WKFR_VREFWKF_Msk
  105. #define PMU_WKFR_IOWKF_Pos (24U)
  106. #define PMU_WKFR_IOWKF_Msk (0x1U << PMU_WKFR_IOWKF_Pos)
  107. #define PMU_WKFR_IOWKF PMU_WKFR_IOWKF_Msk
  108. #define PMU_WKFR_IICWKF_Pos (23U)
  109. #define PMU_WKFR_IICWKF_Msk (0x1U << PMU_WKFR_IICWKF_Pos)
  110. #define PMU_WKFR_IICWKF PMU_WKFR_IICWKF_Msk
  111. #define PMU_WKFR_LPU1WKF_Pos (21U)
  112. #define PMU_WKFR_LPU1WKF_Msk (0x1U << PMU_WKFR_LPU1WKF_Pos)
  113. #define PMU_WKFR_LPU1WKF PMU_WKFR_LPU1WKF_Msk
  114. #define PMU_WKFR_LPU0WKF_Pos (20U)
  115. #define PMU_WKFR_LPU0WKF_Msk (0x1U << PMU_WKFR_LPU0WKF_Pos)
  116. #define PMU_WKFR_LPU0WKF PMU_WKFR_LPU0WKF_Msk
  117. #define PMU_WKFR_UART1WKF_Pos (19U)
  118. #define PMU_WKFR_UART1WKF_Msk (0x1U << PMU_WKFR_UART1WKF_Pos)
  119. #define PMU_WKFR_UART1WKF PMU_WKFR_UART1WKF_Msk
  120. #define PMU_WKFR_UART0WKF_Pos (18U)
  121. #define PMU_WKFR_UART0WKF_Msk (0x1U << PMU_WKFR_UART0WKF_Pos)
  122. #define PMU_WKFR_UART0WKF PMU_WKFR_UART0WKF_Msk
  123. #define PMU_WKFR_OPA2WKF_Pos (17U)
  124. #define PMU_WKFR_OPA2WKF_Msk (0x1U << PMU_WKFR_OPA2WKF_Pos)
  125. #define PMU_WKFR_OPA2WKF PMU_WKFR_OPA2WKF_Msk
  126. #define PMU_WKFR_OPA1WKF_Pos (16U)
  127. #define PMU_WKFR_OPA1WKF_Msk (0x1U << PMU_WKFR_OPA1WKF_Pos)
  128. #define PMU_WKFR_OPA1WKF PMU_WKFR_OPA1WKF_Msk
  129. #define PMU_WKFR_LPTWKF_Pos (10U)
  130. #define PMU_WKFR_LPTWKF_Msk (0x1U << PMU_WKFR_LPTWKF_Pos)
  131. #define PMU_WKFR_LPTWKF PMU_WKFR_LPTWKF_Msk
  132. #define PMU_WKFR_BSTWKF_Pos (9U)
  133. #define PMU_WKFR_BSTWKF_Msk (0x1U << PMU_WKFR_BSTWKF_Pos)
  134. #define PMU_WKFR_BSTWKF PMU_WKFR_BSTWKF_Msk
  135. #define PMU_WKFR_DBGWKF_Pos (8U)
  136. #define PMU_WKFR_DBGWKF_Msk (0x1U << PMU_WKFR_DBGWKF_Pos)
  137. #define PMU_WKFR_DBGWKF PMU_WKFR_DBGWKF_Msk
  138. #define PMU_WKFR_WKPXF_Pos (0U)
  139. #define PMU_WKFR_WKPXF_Msk (0xffU << PMU_WKFR_WKPXF_Pos)
  140. #define PMU_WKFR_WKPXF PMU_WKFR_WKPXF_Msk
  141. #define PMU_IER_LPRUNEIE_Pos (3U)
  142. #define PMU_IER_LPRUNEIE_Msk (0x1U << PMU_IER_LPRUNEIE_Pos)
  143. #define PMU_IER_LPRUNEIE PMU_IER_LPRUNEIE_Msk
  144. #define PMU_IER_LPACTEIE_Pos (2U)
  145. #define PMU_IER_LPACTEIE_Msk (0x1U << PMU_IER_LPACTEIE_Pos)
  146. #define PMU_IER_LPACTEIE PMU_IER_LPACTEIE_Msk
  147. #define PMU_IER_SLPEIE_Pos (1U)
  148. #define PMU_IER_SLPEIE_Msk (0x1U << PMU_IER_SLPEIE_Pos)
  149. #define PMU_IER_SLPEIE PMU_IER_SLPEIE_Msk
  150. #define PMU_IER_RTCEIE_Pos (0U)
  151. #define PMU_IER_RTCEIE_Msk (0x1U << PMU_IER_RTCEIE_Pos)
  152. #define PMU_IER_RTCEIE PMU_IER_RTCEIE_Msk
  153. #define PMU_ISR_SLPUNEIE_Pos (3U)
  154. #define PMU_ISR_SLPUNEIE_Msk (0x1U << PMU_ISR_SLPUNEIE_Pos)
  155. #define PMU_ISR_SLPUNEIE PMU_ISR_SLPUNEIE_Msk
  156. #define PMU_ISR_LPACTEIF_Pos (2U)
  157. #define PMU_ISR_LPACTEIF_Msk (0x1U << PMU_ISR_LPACTEIF_Pos)
  158. #define PMU_ISR_LPACTEIF PMU_ISR_LPACTEIF_Msk
  159. #define PMU_ISR_SLPEIF_Pos (1U)
  160. #define PMU_ISR_SLPEIF_Msk (0x1U << PMU_ISR_SLPEIF_Pos)
  161. #define PMU_ISR_SLPEIF PMU_ISR_SLPEIF_Msk
  162. #define PMU_ISR_RTCEIF_Pos (0U)
  163. #define PMU_ISR_RTCEIF_Msk (0x1U << PMU_ISR_RTCEIF_Pos)
  164. #define PMU_ISR_RTCEIF PMU_ISR_RTCEIF_Msk
  165. #define FL_PMU_WKUP0PIN (0x1U << 0U)
  166. #define FL_PMU_WKUP1PIN (0x1U << 1U)
  167. #define FL_PMU_WKUP2PIN (0x1U << 2U)
  168. #define FL_PMU_WKUP3PIN (0x1U << 3U)
  169. #define FL_PMU_WKUP4PIN (0x1U << 4U)
  170. #define FL_PMU_WKUP5PIN (0x1U << 5U)
  171. #define FL_PMU_WKUP6PIN (0x1U << 6U)
  172. #define FL_PMU_WKUP7PIN (0x1U << 7U)
  173. #define FL_PMU_LDO_LPM_DISABLE (0x0U << PMU_CR_LDO_LPM_Pos)
  174. #define FL_PMU_LDO_LPM_ENABLE (0x2U << PMU_CR_LDO_LPM_Pos)
  175. #define FL_PMU_RCHF_WAKEUP_FREQ_8MHZ (0x0U << PMU_CR_WKFSEL_Pos)
  176. #define FL_PMU_RCHF_WAKEUP_FREQ_16MHZ (0x1U << PMU_CR_WKFSEL_Pos)
  177. #define FL_PMU_RCHF_WAKEUP_FREQ_24MHZ (0x2U << PMU_CR_WKFSEL_Pos)
  178. #define FL_PMU_SLEEP_MODE_DEEP (0x1U << PMU_CR_SLPDP_Pos)
  179. #define FL_PMU_SLEEP_MODE_NORMAL (0x0U << PMU_CR_SLPDP_Pos)
  180. #define FL_PMU_POWER_MODE_ACTIVE_OR_LPACTIVE (0x0U << PMU_CR_PMOD_Pos)
  181. #define FL_PMU_POWER_MODE_LPRUN_ONLY (0x1U << PMU_CR_PMOD_Pos)
  182. #define FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP (0x2U << PMU_CR_PMOD_Pos)
  183. #define FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS (0x0U << PMU_WKTR_STPCLR_Pos)
  184. #define FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS (0x1U << PMU_WKTR_STPCLR_Pos)
  185. #define FL_PMU_WAKEUP_DELAY_0US (0x0U << PMU_WKTR_T1A_Pos)
  186. #define FL_PMU_WAKEUP_DELAY_2US (0x1U << PMU_WKTR_T1A_Pos)
  187. #define FL_PMU_WAKEUP_DELAY_4US (0x2U << PMU_WKTR_T1A_Pos)
  188. #define FL_PMU_WAKEUP_DELAY_8US (0x3U << PMU_WKTR_T1A_Pos)
  189. /**
  190. * @}
  191. */
  192. /* Exported functions ---------------------------------------------------------------------------------*/
  193. /** @defgroup PMU_FL_Exported_Functions PMU Exported Functions
  194. * @{
  195. */
  196. /**
  197. * @brief Set LDO Low Power Mode
  198. * @rmtoll CR LDO_LPM FL_PMU_SetLDOLowPowerMode
  199. * @param PMUx PMU instance
  200. * @param mode This parameter can be one of the following values:
  201. * @arg @ref FL_PMU_LDO_LPM_DISABLE
  202. * @arg @ref FL_PMU_LDO_LPM_ENABLE
  203. * @retval None
  204. */
  205. __STATIC_INLINE void FL_PMU_SetLDOLowPowerMode(PMU_Type *PMUx, uint32_t mode)
  206. {
  207. MODIFY_REG(PMUx->CR, PMU_CR_LDO_LPM_Msk, mode);
  208. }
  209. /**
  210. * @brief Get LDO Low Power Mode Setting
  211. * @rmtoll CR LDO_LPM FL_PMU_GetLDOLowPowerMode
  212. * @param PMUx PMU instance
  213. * @retval Returned value can be one of the following values:
  214. * @arg @ref FL_PMU_LDO_LPM_DISABLE
  215. * @arg @ref FL_PMU_LDO_LPM_ENABLE
  216. */
  217. __STATIC_INLINE uint32_t FL_PMU_GetLDOLowPowerMode(PMU_Type *PMUx)
  218. {
  219. return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO_LPM_Msk));
  220. }
  221. /**
  222. * @brief Get LDO15 Enable Status
  223. * @rmtoll CR LDO15EN FL_PMU_GetLDO15Status
  224. * @param PMUx PMU instance
  225. * @retval Returned value can be one of the following values:
  226. */
  227. __STATIC_INLINE uint32_t FL_PMU_GetLDO15Status(PMU_Type *PMUx)
  228. {
  229. return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO15EN_Msk));
  230. }
  231. /**
  232. * @brief Get LDO15 Inverse check bit
  233. * @rmtoll CR LDO15EN_B FL_PMU_GetLDO15StatusInvert
  234. * @param PMUx PMU instance
  235. * @retval Returned value can be one of the following values:
  236. */
  237. __STATIC_INLINE uint32_t FL_PMU_GetLDO15StatusInvert(PMU_Type *PMUx)
  238. {
  239. return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO15EN_B_Msk));
  240. }
  241. /**
  242. * @brief Set RCHF Frequency After Wakeup
  243. * @rmtoll CR WKFSEL FL_PMU_SetRCHFWakeupFrequency
  244. * @param PMUx PMU instance
  245. * @param freq This parameter can be one of the following values:
  246. * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_8MHZ
  247. * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_16MHZ
  248. * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_24MHZ
  249. * @retval None
  250. */
  251. __STATIC_INLINE void FL_PMU_SetRCHFWakeupFrequency(PMU_Type *PMUx, uint32_t freq)
  252. {
  253. MODIFY_REG(PMUx->CR, PMU_CR_WKFSEL_Msk, freq);
  254. }
  255. /**
  256. * @brief Get RCHF Frequency After Wakeup Setting
  257. * @rmtoll CR WKFSEL FL_PMU_GetRCHFWakeupFrequency
  258. * @param PMUx PMU instance
  259. * @retval Returned value can be one of the following values:
  260. * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_8MHZ
  261. * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_16MHZ
  262. * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_24MHZ
  263. */
  264. __STATIC_INLINE uint32_t FL_PMU_GetRCHFWakeupFrequency(PMU_Type *PMUx)
  265. {
  266. return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_WKFSEL_Msk));
  267. }
  268. /**
  269. * @brief Set Sleep Mode
  270. * @rmtoll CR SLPDP FL_PMU_SetSleepMode
  271. * @param PMUx PMU instance
  272. * @param mode This parameter can be one of the following values:
  273. * @arg @ref FL_PMU_SLEEP_MODE_DEEP
  274. * @arg @ref FL_PMU_SLEEP_MODE_NORMAL
  275. * @retval None
  276. */
  277. __STATIC_INLINE void FL_PMU_SetSleepMode(PMU_Type *PMUx, uint32_t mode)
  278. {
  279. MODIFY_REG(PMUx->CR, PMU_CR_SLPDP_Msk, mode);
  280. }
  281. /**
  282. * @brief Get Sleep Mode Setting
  283. * @rmtoll CR SLPDP FL_PMU_GetSleepMode
  284. * @param PMUx PMU instance
  285. * @retval Returned value can be one of the following values:
  286. * @arg @ref FL_PMU_SLEEP_MODE_DEEP
  287. * @arg @ref FL_PMU_SLEEP_MODE_NORMAL
  288. */
  289. __STATIC_INLINE uint32_t FL_PMU_GetSleepMode(PMU_Type *PMUx)
  290. {
  291. return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_SLPDP_Msk));
  292. }
  293. /**
  294. * @brief Enable Core Voltage Scaling Under Low Power Mode
  295. * @rmtoll CR CVS FL_PMU_EnableCoreVoltageScaling
  296. * @param PMUx PMU instance
  297. * @retval None
  298. */
  299. __STATIC_INLINE void FL_PMU_EnableCoreVoltageScaling(PMU_Type *PMUx)
  300. {
  301. SET_BIT(PMUx->CR, PMU_CR_CVS_Msk);
  302. }
  303. /**
  304. * @brief Get Core Voltage Scaling Under Low Power Mode Enable Status
  305. * @rmtoll CR CVS FL_PMU_IsEnabledCoreVoltageScaling
  306. * @param PMUx PMU instance
  307. * @retval State of bit (1 or 0).
  308. */
  309. __STATIC_INLINE uint32_t FL_PMU_IsEnabledCoreVoltageScaling(PMU_Type *PMUx)
  310. {
  311. return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_CVS_Msk) == PMU_CR_CVS_Msk);
  312. }
  313. /**
  314. * @brief Disable Core Voltage Scaling Under Low Power Mode
  315. * @rmtoll CR CVS FL_PMU_DisableCoreVoltageScaling
  316. * @param PMUx PMU instance
  317. * @retval None
  318. */
  319. __STATIC_INLINE void FL_PMU_DisableCoreVoltageScaling(PMU_Type *PMUx)
  320. {
  321. CLEAR_BIT(PMUx->CR, PMU_CR_CVS_Msk);
  322. }
  323. /**
  324. * @brief Set Low Power Mode
  325. * @rmtoll CR PMOD FL_PMU_SetLowPowerMode
  326. * @param PMUx PMU instance
  327. * @param mode This parameter can be one of the following values:
  328. * @arg @ref FL_PMU_POWER_MODE_ACTIVE_OR_LPACTIVE
  329. * @arg @ref FL_PMU_POWER_MODE_LPRUN_ONLY
  330. * @arg @ref FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP
  331. * @retval None
  332. */
  333. __STATIC_INLINE void FL_PMU_SetLowPowerMode(PMU_Type *PMUx, uint32_t mode)
  334. {
  335. MODIFY_REG(PMUx->CR, PMU_CR_PMOD_Msk, mode);
  336. }
  337. /**
  338. * @brief Get Low Power Mode Setting
  339. * @rmtoll CR PMOD FL_PMU_GetLowPowerMode
  340. * @param PMUx PMU instance
  341. * @retval Returned value can be one of the following values:
  342. */
  343. __STATIC_INLINE uint32_t FL_PMU_GetLowPowerMode(PMU_Type *PMUx)
  344. {
  345. return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_PMOD_Msk));
  346. }
  347. /**
  348. * @brief Set Flash Stop Signal Clear Way
  349. * @rmtoll WKTR STPCLR FL_PMU_SetFlashStopSignalClearMode
  350. * @param PMUx PMU instance
  351. * @param config This parameter can be one of the following values:
  352. * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS
  353. * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS
  354. * @retval None
  355. */
  356. __STATIC_INLINE void FL_PMU_SetFlashStopSignalClearMode(PMU_Type *PMUx, uint32_t config)
  357. {
  358. MODIFY_REG(PMUx->WKTR, PMU_WKTR_STPCLR_Msk, config);
  359. }
  360. /**
  361. * @brief Get Flash Stop Signal Clear Way Setting
  362. * @rmtoll WKTR STPCLR FL_PMU_GetFlashStopSignalClearMode
  363. * @param PMUx PMU instance
  364. * @retval Returned value can be one of the following values:
  365. * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS
  366. * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS
  367. */
  368. __STATIC_INLINE uint32_t FL_PMU_GetFlashStopSignalClearMode(PMU_Type *PMUx)
  369. {
  370. return (uint32_t)(READ_BIT(PMUx->WKTR, PMU_WKTR_STPCLR_Msk));
  371. }
  372. /**
  373. * @brief Set Extra Wakeup Delay Under Sleep/DeepSleep Mode
  374. * @rmtoll WKTR T1A FL_PMU_SetWakeupDelay
  375. * @param PMUx PMU instance
  376. * @param time This parameter can be one of the following values:
  377. * @arg @ref FL_PMU_WAKEUP_DELAY_0US
  378. * @arg @ref FL_PMU_WAKEUP_DELAY_2US
  379. * @arg @ref FL_PMU_WAKEUP_DELAY_4US
  380. * @arg @ref FL_PMU_WAKEUP_DELAY_8US
  381. * @retval None
  382. */
  383. __STATIC_INLINE void FL_PMU_SetWakeupDelay(PMU_Type *PMUx, uint32_t time)
  384. {
  385. MODIFY_REG(PMUx->WKTR, PMU_WKTR_T1A_Msk, time);
  386. }
  387. /**
  388. * @brief Get Extra Wakeup Delay Under Sleep/DeepSleep Mode Setting
  389. * @rmtoll WKTR T1A FL_PMU_GetWakeupDelay
  390. * @param PMUx PMU instance
  391. * @retval Returned value can be one of the following values:
  392. * @arg @ref FL_PMU_WAKEUP_DELAY_0US
  393. * @arg @ref FL_PMU_WAKEUP_DELAY_2US
  394. * @arg @ref FL_PMU_WAKEUP_DELAY_4US
  395. * @arg @ref FL_PMU_WAKEUP_DELAY_8US
  396. */
  397. __STATIC_INLINE uint32_t FL_PMU_GetWakeupDelay(PMU_Type *PMUx)
  398. {
  399. return (uint32_t)(READ_BIT(PMUx->WKTR, PMU_WKTR_T1A_Msk));
  400. }
  401. /**
  402. * @brief Get ADC interrupt wakeup flag
  403. * @rmtoll WKFR ADCWKF FL_PMU_IsActiveFlag_WakeupADC
  404. * @param PMUx PMU instance
  405. * @retval State of bit (1 or 0).
  406. */
  407. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupADC(PMU_Type *PMUx)
  408. {
  409. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_ADCWKF_Msk) == (PMU_WKFR_ADCWKF_Msk));
  410. }
  411. /**
  412. * @brief Get RTC interrupt wakeup flag
  413. * @rmtoll WKFR RTCWKF FL_PMU_IsActiveFlag_WakeupRTC
  414. * @param PMUx PMU instance
  415. * @retval State of bit (1 or 0).
  416. */
  417. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupRTC(PMU_Type *PMUx)
  418. {
  419. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_RTCWKF_Msk) == (PMU_WKFR_RTCWKF_Msk));
  420. }
  421. /**
  422. * @brief Get SVD interrupt wakeup flag
  423. * @rmtoll WKFR SVDWKF FL_PMU_IsActiveFlag_WakeupSVD
  424. * @param PMUx PMU instance
  425. * @retval State of bit (1 or 0).
  426. */
  427. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupSVD(PMU_Type *PMUx)
  428. {
  429. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_SVDWKF_Msk) == (PMU_WKFR_SVDWKF_Msk));
  430. }
  431. /**
  432. * @brief Get LFDET interrupt wakeup flag
  433. * @rmtoll WKFR LFDETWKF FL_PMU_IsActiveFlag_WakeupLFDET
  434. * @param PMUx PMU instance
  435. * @retval State of bit (1 or 0).
  436. */
  437. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLFDET(PMU_Type *PMUx)
  438. {
  439. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LFDETWKF_Msk) == (PMU_WKFR_LFDETWKF_Msk));
  440. }
  441. /**
  442. * @brief Get VREF interrupt wakeup flag
  443. * @rmtoll WKFR VREFWKF FL_PMU_IsActiveFlag_WakeupVREF
  444. * @param PMUx PMU instance
  445. * @retval State of bit (1 or 0).
  446. */
  447. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupVREF(PMU_Type *PMUx)
  448. {
  449. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_VREFWKF_Msk) == (PMU_WKFR_VREFWKF_Msk));
  450. }
  451. /**
  452. * @brief Get IO interrupt wakeup flag
  453. * @rmtoll WKFR IOWKF FL_PMU_IsActiveFlag_WakeupEXTI
  454. * @param PMUx PMU instance
  455. * @retval State of bit (1 or 0).
  456. */
  457. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupEXTI(PMU_Type *PMUx)
  458. {
  459. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_IOWKF_Msk) == (PMU_WKFR_IOWKF_Msk));
  460. }
  461. /**
  462. * @brief Get I2C interrupt wakeup flag
  463. * @rmtoll WKFR IICWKF FL_PMU_IsActiveFlag_WakeupI2C
  464. * @param PMUx PMU instance
  465. * @retval State of bit (1 or 0).
  466. */
  467. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupI2C(PMU_Type *PMUx)
  468. {
  469. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_IICWKF_Msk) == (PMU_WKFR_IICWKF_Msk));
  470. }
  471. /**
  472. * @brief Get LPUART1 interrupt wakeup flag
  473. * @rmtoll WKFR LPU1WKF FL_PMU_IsActiveFlag_WakeupLPUART1
  474. * @param PMUx PMU instance
  475. * @retval State of bit (1 or 0).
  476. */
  477. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPUART1(PMU_Type *PMUx)
  478. {
  479. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPU1WKF_Msk) == (PMU_WKFR_LPU1WKF_Msk));
  480. }
  481. /**
  482. * @brief Get LPUART0 interrupt wakeup flag
  483. * @rmtoll WKFR LPU0WKF FL_PMU_IsActiveFlag_WakeupLPUART0
  484. * @param PMUx PMU instance
  485. * @retval State of bit (1 or 0).
  486. */
  487. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPUART0(PMU_Type *PMUx)
  488. {
  489. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPU0WKF_Msk) == (PMU_WKFR_LPU0WKF_Msk));
  490. }
  491. /**
  492. * @brief Get UART1 interrupt wakeup flag
  493. * @rmtoll WKFR UART1WKF FL_PMU_IsActiveFlag_WakeupUART1
  494. * @param PMUx PMU instance
  495. * @retval State of bit (1 or 0).
  496. */
  497. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupUART1(PMU_Type *PMUx)
  498. {
  499. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_UART1WKF_Msk) == (PMU_WKFR_UART1WKF_Msk));
  500. }
  501. /**
  502. * @brief Get UART0 interrupt wakeup flag
  503. * @rmtoll WKFR UART0WKF FL_PMU_IsActiveFlag_WakeupUART0
  504. * @param PMUx PMU instance
  505. * @retval State of bit (1 or 0).
  506. */
  507. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupUART0(PMU_Type *PMUx)
  508. {
  509. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_UART0WKF_Msk) == (PMU_WKFR_UART0WKF_Msk));
  510. }
  511. /**
  512. * @brief Get COMP2 interrrupt wakeup flag
  513. * @rmtoll WKFR OPA2WKF FL_PMU_IsActiveFlag_WakeupCOMP2
  514. * @param PMUx PMU instance
  515. * @retval State of bit (1 or 0).
  516. */
  517. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupCOMP2(PMU_Type *PMUx)
  518. {
  519. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_OPA2WKF_Msk) == (PMU_WKFR_OPA2WKF_Msk));
  520. }
  521. /**
  522. * @brief Get COMP1 interrrupt wakeup flag
  523. * @rmtoll WKFR OPA1WKF FL_PMU_IsActiveFlag_WakeupCOMP1
  524. * @param PMUx PMU instance
  525. * @retval State of bit (1 or 0).
  526. */
  527. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupCOMP1(PMU_Type *PMUx)
  528. {
  529. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_OPA1WKF_Msk) == (PMU_WKFR_OPA1WKF_Msk));
  530. }
  531. /**
  532. * @brief Get LPTIM32 interrupt wakeup flag
  533. * @rmtoll WKFR LPTWKF FL_PMU_IsActiveFlag_WakeupLPTIM32
  534. * @param PMUx PMU instance
  535. * @retval State of bit (1 or 0).
  536. */
  537. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPTIM32(PMU_Type *PMUx)
  538. {
  539. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPTWKF_Msk) == (PMU_WKFR_LPTWKF_Msk));
  540. }
  541. /**
  542. * @brief Get BSTIM32 interrupt wakeup flag
  543. * @rmtoll WKFR BSTWKF FL_PMU_IsActiveFlag_WakeupBSTIM32
  544. * @param PMUx PMU instance
  545. * @retval State of bit (1 or 0).
  546. */
  547. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupBSTIM32(PMU_Type *PMUx)
  548. {
  549. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_BSTWKF_Msk) == (PMU_WKFR_BSTWKF_Msk));
  550. }
  551. /**
  552. * @brief Get CPU Debugger wakeup flag
  553. * @rmtoll WKFR DBGWKF FL_PMU_IsActiveFlag_WakeupDBG
  554. * @param PMUx PMU instance
  555. * @retval State of bit (1 or 0).
  556. */
  557. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupDBG(PMU_Type *PMUx)
  558. {
  559. return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_DBGWKF_Msk) == (PMU_WKFR_DBGWKF_Msk));
  560. }
  561. /**
  562. * @brief Clear CPU Debugger wakeup flag
  563. * @rmtoll WKFR DBGWKF FL_PMU_ClearFlag_WakeupDBG
  564. * @param PMUx PMU instance
  565. * @retval None
  566. */
  567. __STATIC_INLINE void FL_PMU_ClearFlag_WakeupDBG(PMU_Type *PMUx)
  568. {
  569. WRITE_REG(PMUx->WKFR, PMU_WKFR_DBGWKF_Msk);
  570. }
  571. /**
  572. * @brief Get pinx wakeup flag
  573. * @rmtoll WKFR WKPXF FL_PMU_IsActiveFlag_WakeupPIN
  574. * @param PMUx PMU instance
  575. * @param Pin This parameter can be one of the following values:
  576. * @arg @ref FL_PMU_WKUP0PIN
  577. * @arg @ref FL_PMU_WKUP1PIN
  578. * @arg @ref FL_PMU_WKUP2PIN
  579. * @arg @ref FL_PMU_WKUP3PIN
  580. * @arg @ref FL_PMU_WKUP4PIN
  581. * @arg @ref FL_PMU_WKUP5PIN
  582. * @arg @ref FL_PMU_WKUP6PIN
  583. * @arg @ref FL_PMU_WKUP7PIN
  584. * @retval State of bit (1 or 0).
  585. */
  586. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupPIN(PMU_Type *PMUx, uint32_t Pin)
  587. {
  588. return (uint32_t)(READ_BIT(PMUx->WKFR, ((Pin & 0xff) << 0x0U)) == ((Pin & 0xff) << 0x0U));
  589. }
  590. /**
  591. * @brief Clear pinx wakeup flag
  592. * @rmtoll WKFR WKPXF FL_PMU_ClearFlag_WakeupPIN
  593. * @param PMUx PMU instance
  594. * @param Pin This parameter can be one of the following values:
  595. * @arg @ref FL_PMU_WKUP0PIN
  596. * @arg @ref FL_PMU_WKUP1PIN
  597. * @arg @ref FL_PMU_WKUP2PIN
  598. * @arg @ref FL_PMU_WKUP3PIN
  599. * @arg @ref FL_PMU_WKUP4PIN
  600. * @arg @ref FL_PMU_WKUP5PIN
  601. * @arg @ref FL_PMU_WKUP6PIN
  602. * @arg @ref FL_PMU_WKUP7PIN
  603. * @retval None
  604. */
  605. __STATIC_INLINE void FL_PMU_ClearFlag_WakeupPIN(PMU_Type *PMUx, uint32_t Pin)
  606. {
  607. WRITE_REG(PMUx->WKFR, ((Pin & 0xff) << 0x0U));
  608. }
  609. /**
  610. * @brief LPREIE error interrupt enable
  611. * @rmtoll IER LPRUNEIE FL_PMU_EnableIT_LPRunError
  612. * @param PMUx PMU instance
  613. * @retval None
  614. */
  615. __STATIC_INLINE void FL_PMU_EnableIT_LPRunError(PMU_Type *PMUx)
  616. {
  617. SET_BIT(PMUx->IER, PMU_IER_LPRUNEIE_Msk);
  618. }
  619. /**
  620. * @brief Get LPREIE error interrupt enable status
  621. * @rmtoll IER LPRUNEIE FL_PMU_IsEnabledIT_LPRunError
  622. * @param PMUx PMU instance
  623. * @retval State of bit (1 or 0).
  624. */
  625. __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_LPRunError(PMU_Type *PMUx)
  626. {
  627. return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_LPRUNEIE_Msk) == PMU_IER_LPRUNEIE_Msk);
  628. }
  629. /**
  630. * @brief LPREIE error interrupt disable
  631. * @rmtoll IER LPRUNEIE FL_PMU_DisableIT_LPRunError
  632. * @param PMUx PMU instance
  633. * @retval None
  634. */
  635. __STATIC_INLINE void FL_PMU_DisableIT_LPRunError(PMU_Type *PMUx)
  636. {
  637. CLEAR_BIT(PMUx->IER, PMU_IER_LPRUNEIE_Msk);
  638. }
  639. /**
  640. * @brief LPActive error interrupt enable
  641. * @rmtoll IER LPACTEIE FL_PMU_EnableIT_LPActiveError
  642. * @param PMUx PMU instance
  643. * @retval None
  644. */
  645. __STATIC_INLINE void FL_PMU_EnableIT_LPActiveError(PMU_Type *PMUx)
  646. {
  647. SET_BIT(PMUx->IER, PMU_IER_LPACTEIE_Msk);
  648. }
  649. /**
  650. * @brief Get LPActive error interrupt enable status
  651. * @rmtoll IER LPACTEIE FL_PMU_IsEnabledIT_LPActiveError
  652. * @param PMUx PMU instance
  653. * @retval State of bit (1 or 0).
  654. */
  655. __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_LPActiveError(PMU_Type *PMUx)
  656. {
  657. return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_LPACTEIE_Msk) == PMU_IER_LPACTEIE_Msk);
  658. }
  659. /**
  660. * @brief LPActive error interrupt disable
  661. * @rmtoll IER LPACTEIE FL_PMU_DisableIT_LPActiveError
  662. * @param PMUx PMU instance
  663. * @retval None
  664. */
  665. __STATIC_INLINE void FL_PMU_DisableIT_LPActiveError(PMU_Type *PMUx)
  666. {
  667. CLEAR_BIT(PMUx->IER, PMU_IER_LPACTEIE_Msk);
  668. }
  669. /**
  670. * @brief Sleep error interrupt enable
  671. * @rmtoll IER SLPEIE FL_PMU_EnableIT_SleepError
  672. * @param PMUx PMU instance
  673. * @retval None
  674. */
  675. __STATIC_INLINE void FL_PMU_EnableIT_SleepError(PMU_Type *PMUx)
  676. {
  677. SET_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk);
  678. }
  679. /**
  680. * @brief Get sleep error interrupt enable status
  681. * @rmtoll IER SLPEIE FL_PMU_IsEnabledIT_SleepError
  682. * @param PMUx PMU instance
  683. * @retval State of bit (1 or 0).
  684. */
  685. __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_SleepError(PMU_Type *PMUx)
  686. {
  687. return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk) == PMU_IER_SLPEIE_Msk);
  688. }
  689. /**
  690. * @brief sleep error interrupt disable
  691. * @rmtoll IER SLPEIE FL_PMU_DisableIT_SleepError
  692. * @param PMUx PMU instance
  693. * @retval None
  694. */
  695. __STATIC_INLINE void FL_PMU_DisableIT_SleepError(PMU_Type *PMUx)
  696. {
  697. CLEAR_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk);
  698. }
  699. /**
  700. * @brief RTCBKP error interrupt enable
  701. * @rmtoll IER RTCEIE FL_PMU_EnableIT_RTCBKPError
  702. * @param PMUx PMU instance
  703. * @retval None
  704. */
  705. __STATIC_INLINE void FL_PMU_EnableIT_RTCBKPError(PMU_Type *PMUx)
  706. {
  707. SET_BIT(PMUx->IER, PMU_IER_RTCEIE_Msk);
  708. }
  709. /**
  710. * @brief Get RTCBKP error interrupt enable status
  711. * @rmtoll IER RTCEIE FL_PMU_IsEnabledIT_RTCBKPError
  712. * @param PMUx PMU instance
  713. * @retval State of bit (1 or 0).
  714. */
  715. __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_RTCBKPError(PMU_Type *PMUx)
  716. {
  717. return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_RTCEIE_Msk) == PMU_IER_RTCEIE_Msk);
  718. }
  719. /**
  720. * @brief Sleep error interrupt disable
  721. * @rmtoll IER RTCEIE FL_PMU_DisableIT_RTCBKPError
  722. * @param PMUx PMU instance
  723. * @retval None
  724. */
  725. __STATIC_INLINE void FL_PMU_DisableIT_RTCBKPError(PMU_Type *PMUx)
  726. {
  727. CLEAR_BIT(PMUx->IER, PMU_IER_RTCEIE_Msk);
  728. }
  729. /**
  730. * @brief Get LPRUN error interrupt flag
  731. * @rmtoll ISR SLPUNEIE FL_PMU_IsActiveFlag_LPRunError
  732. * @param PMUx PMU instance
  733. * @retval State of bit (1 or 0).
  734. */
  735. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_LPRunError(PMU_Type *PMUx)
  736. {
  737. return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_SLPUNEIE_Msk) == (PMU_ISR_SLPUNEIE_Msk));
  738. }
  739. /**
  740. * @brief Clear LPRUN error interrupt flag
  741. * @rmtoll ISR SLPUNEIE FL_PMU_ClearFlag_LPRunError
  742. * @param PMUx PMU instance
  743. * @retval None
  744. */
  745. __STATIC_INLINE void FL_PMU_ClearFlag_LPRunError(PMU_Type *PMUx)
  746. {
  747. WRITE_REG(PMUx->ISR, PMU_ISR_SLPUNEIE_Msk);
  748. }
  749. /**
  750. * @brief Get LPACTIF error interrupt flag
  751. * @rmtoll ISR LPACTEIF FL_PMU_IsActiveFlag_LPActiveError
  752. * @param PMUx PMU instance
  753. * @retval State of bit (1 or 0).
  754. */
  755. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_LPActiveError(PMU_Type *PMUx)
  756. {
  757. return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_LPACTEIF_Msk) == (PMU_ISR_LPACTEIF_Msk));
  758. }
  759. /**
  760. * @brief Clear LPACTIF error interrupt flag
  761. * @rmtoll ISR LPACTEIF FL_PMU_ClearFlag_LPActiveError
  762. * @param PMUx PMU instance
  763. * @retval None
  764. */
  765. __STATIC_INLINE void FL_PMU_ClearFlag_LPActiveError(PMU_Type *PMUx)
  766. {
  767. WRITE_REG(PMUx->ISR, PMU_ISR_LPACTEIF_Msk);
  768. }
  769. /**
  770. * @brief Get SLEEP error interrupt flag
  771. * @rmtoll ISR SLPEIF FL_PMU_IsActiveFlag_SleepError
  772. * @param PMUx PMU instance
  773. * @retval State of bit (1 or 0).
  774. */
  775. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_SleepError(PMU_Type *PMUx)
  776. {
  777. return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_SLPEIF_Msk) == (PMU_ISR_SLPEIF_Msk));
  778. }
  779. /**
  780. * @brief Clear SLEEP error interrupt flag
  781. * @rmtoll ISR SLPEIF FL_PMU_ClearFlag_SleepError
  782. * @param PMUx PMU instance
  783. * @retval None
  784. */
  785. __STATIC_INLINE void FL_PMU_ClearFlag_SleepError(PMU_Type *PMUx)
  786. {
  787. WRITE_REG(PMUx->ISR, PMU_ISR_SLPEIF_Msk);
  788. }
  789. /**
  790. * @brief Get RTCBKP error interrupt flag
  791. * @rmtoll ISR RTCEIF FL_PMU_IsActiveFlag_RTCError
  792. * @param PMUx PMU instance
  793. * @retval State of bit (1 or 0).
  794. */
  795. __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_RTCError(PMU_Type *PMUx)
  796. {
  797. return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_RTCEIF_Msk) == (PMU_ISR_RTCEIF_Msk));
  798. }
  799. /**
  800. * @brief Clear RTCBKP error interrupt flag
  801. * @rmtoll ISR RTCEIF FL_PMU_ClearFlag_RTCError
  802. * @param PMUx PMU instance
  803. * @retval None
  804. */
  805. __STATIC_INLINE void FL_PMU_ClearFlag_RTCError(PMU_Type *PMUx)
  806. {
  807. WRITE_REG(PMUx->ISR, PMU_ISR_RTCEIF_Msk);
  808. }
  809. /**
  810. * @}
  811. */
  812. /** @defgroup PMU_FL_EF_Init Initialization and de-initialization functions
  813. * @{
  814. */
  815. FL_ErrorStatus FL_PMU_Sleep_DeInit(PMU_Type *PMUx);
  816. FL_ErrorStatus FL_PMU_Sleep_Init(PMU_Type *PMUx, FL_PMU_SleepInitTypeDef *LPM_InitStruct);
  817. void FL_PMU_StructInit(FL_PMU_SleepInitTypeDef *LPM_InitStruct);
  818. /**
  819. * @}
  820. */
  821. /**
  822. * @}
  823. */
  824. /**
  825. * @}
  826. */
  827. #ifdef __cplusplus
  828. }
  829. #endif
  830. #endif /* __FM33LC0XX_FL_PMU_H*/
  831. /*************************Py_Code_Generator Version: 0.1-0.11-0.2 @ 2020-09-23*************************/
  832. /*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/