fm33lc0xx_fl_svd.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_svd.h
  4. * @author FMSH Application Team
  5. * @brief Head file of SVD 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_SVD_H
  23. #define __FM33LC0XX_FL_SVD_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 SVD SVD
  33. * @brief SVD FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup SVD_FL_ES_INIT SVD Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief SVD Init Sturcture definition
  42. */
  43. typedef struct
  44. {
  45. /* 参考电压 */
  46. uint32_t referenceVoltage;
  47. /* 报警阈值 */
  48. uint32_t warningThreshold;
  49. /* 数字滤波 */
  50. uint32_t digitalFilter;
  51. /* SVS通道选择 */
  52. uint32_t SVSChannel;
  53. } FL_SVD_InitTypeDef;
  54. /**
  55. * @}
  56. */
  57. /* Exported constants ---------------------------------------------------------------------------------*/
  58. /** @defgroup SVD_FL_Exported_Constants SVD Exported Constants
  59. * @{
  60. */
  61. #define SVD_CFGR_ADSVD_SEL_Pos (9U)
  62. #define SVD_CFGR_ADSVD_SEL_Msk (0x7U << SVD_CFGR_ADSVD_SEL_Pos)
  63. #define SVD_CFGR_ADSVD_SEL SVD_CFGR_ADSVD_SEL_Msk
  64. #define SVD_CFGR_ADSVD_EN_Pos (8U)
  65. #define SVD_CFGR_ADSVD_EN_Msk (0x1U << SVD_CFGR_ADSVD_EN_Pos)
  66. #define SVD_CFGR_ADSVD_EN SVD_CFGR_ADSVD_EN_Msk
  67. #define SVD_CFGR_LVL_Pos (4U)
  68. #define SVD_CFGR_LVL_Msk (0xfU << SVD_CFGR_LVL_Pos)
  69. #define SVD_CFGR_LVL SVD_CFGR_LVL_Msk
  70. #define SVD_CFGR_DFEN_Pos (3U)
  71. #define SVD_CFGR_DFEN_Msk (0x1U << SVD_CFGR_DFEN_Pos)
  72. #define SVD_CFGR_DFEN SVD_CFGR_DFEN_Msk
  73. #define SVD_CFGR_MOD_Pos (2U)
  74. #define SVD_CFGR_MOD_Msk (0x1U << SVD_CFGR_MOD_Pos)
  75. #define SVD_CFGR_MOD SVD_CFGR_MOD_Msk
  76. #define SVD_CFGR_ITVL_Pos (0U)
  77. #define SVD_CFGR_ITVL_Msk (0x3U << SVD_CFGR_ITVL_Pos)
  78. #define SVD_CFGR_ITVL SVD_CFGR_ITVL_Msk
  79. #define SVD_CR_SVSEN_Pos (1U)
  80. #define SVD_CR_SVSEN_Msk (0x1U << SVD_CR_SVSEN_Pos)
  81. #define SVD_CR_SVSEN SVD_CR_SVSEN_Msk
  82. #define SVD_CR_EN_Pos (0U)
  83. #define SVD_CR_EN_Msk (0x1U << SVD_CR_EN_Pos)
  84. #define SVD_CR_EN SVD_CR_EN_Msk
  85. #define SVD_IER_PFIE_Pos (1U)
  86. #define SVD_IER_PFIE_Msk (0x1U << SVD_IER_PFIE_Pos)
  87. #define SVD_IER_PFIE SVD_IER_PFIE_Msk
  88. #define SVD_IER_PRIE_Pos (0U)
  89. #define SVD_IER_PRIE_Msk (0x1U << SVD_IER_PRIE_Pos)
  90. #define SVD_IER_PRIE SVD_IER_PRIE_Msk
  91. #define SVD_ISR_ADLVDO_Pos (16U)
  92. #define SVD_ISR_ADLVDO_Msk (0x1U << SVD_ISR_ADLVDO_Pos)
  93. #define SVD_ISR_ADLVDO SVD_ISR_ADLVDO_Msk
  94. #define SVD_ISR_SVDO_Pos (8U)
  95. #define SVD_ISR_SVDO_Msk (0x1U << SVD_ISR_SVDO_Pos)
  96. #define SVD_ISR_SVDO SVD_ISR_SVDO_Msk
  97. #define SVD_ISR_SVDR_Pos (7U)
  98. #define SVD_ISR_SVDR_Msk (0x1U << SVD_ISR_SVDR_Pos)
  99. #define SVD_ISR_SVDR SVD_ISR_SVDR_Msk
  100. #define SVD_ISR_PFF_Pos (1U)
  101. #define SVD_ISR_PFF_Msk (0x1U << SVD_ISR_PFF_Pos)
  102. #define SVD_ISR_PFF SVD_ISR_PFF_Msk
  103. #define SVD_ISR_PRF_Pos (0U)
  104. #define SVD_ISR_PRF_Msk (0x1U << SVD_ISR_PRF_Pos)
  105. #define SVD_ISR_PRF SVD_ISR_PRF_Msk
  106. #define SVD_VSR_EN_Pos (0U)
  107. #define SVD_VSR_EN_Msk (0x7U << SVD_VSR_EN_Pos)
  108. #define SVD_VSR_EN SVD_VSR_EN_Msk
  109. #define FL_SVD_REFERENCE_1P2V (0x1U << 2U)
  110. #define FL_SVD_REFERENCE_1P1V (0x1U << 1U)
  111. #define FL_SVD_REFERENCE_1P0V (0x1U << 0U)
  112. #define FL_SVD_ADC_THRESHOLD_3P300V (0x0U << SVD_CFGR_ADSVD_SEL_Pos)
  113. #define FL_SVD_ADC_THRESHOLD_3P514V (0x1U << SVD_CFGR_ADSVD_SEL_Pos)
  114. #define FL_SVD_ADC_THRESHOLD_3P729V (0x2U << SVD_CFGR_ADSVD_SEL_Pos)
  115. #define FL_SVD_ADC_THRESHOLD_3P943V (0x3U << SVD_CFGR_ADSVD_SEL_Pos)
  116. #define FL_SVD_ADC_THRESHOLD_4P157V (0x4U << SVD_CFGR_ADSVD_SEL_Pos)
  117. #define FL_SVD_ADC_THRESHOLD_4P371V (0x5U << SVD_CFGR_ADSVD_SEL_Pos)
  118. #define FL_SVD_ADC_THRESHOLD_4P586V (0x6U << SVD_CFGR_ADSVD_SEL_Pos)
  119. #define FL_SVD_ADC_THRESHOLD_4P800V (0x7U << SVD_CFGR_ADSVD_SEL_Pos)
  120. #define FL_SVD_WARNING_THRESHOLD_GROUP0 (0x0U << SVD_CFGR_LVL_Pos)
  121. #define FL_SVD_WARNING_THRESHOLD_GROUP1 (0x1U << SVD_CFGR_LVL_Pos)
  122. #define FL_SVD_WARNING_THRESHOLD_GROUP2 (0x2U << SVD_CFGR_LVL_Pos)
  123. #define FL_SVD_WARNING_THRESHOLD_GROUP3 (0x3U << SVD_CFGR_LVL_Pos)
  124. #define FL_SVD_WARNING_THRESHOLD_GROUP4 (0x4U << SVD_CFGR_LVL_Pos)
  125. #define FL_SVD_WARNING_THRESHOLD_GROUP5 (0x5U << SVD_CFGR_LVL_Pos)
  126. #define FL_SVD_WARNING_THRESHOLD_GROUP6 (0x6U << SVD_CFGR_LVL_Pos)
  127. #define FL_SVD_WARNING_THRESHOLD_GROUP7 (0x7U << SVD_CFGR_LVL_Pos)
  128. #define FL_SVD_WARNING_THRESHOLD_GROUP8 (0x8U << SVD_CFGR_LVL_Pos)
  129. #define FL_SVD_WARNING_THRESHOLD_GROUP9 (0x9U << SVD_CFGR_LVL_Pos)
  130. #define FL_SVD_WARNING_THRESHOLD_GROUP10 (0xaU << SVD_CFGR_LVL_Pos)
  131. #define FL_SVD_WARNING_THRESHOLD_GROUP11 (0xbU << SVD_CFGR_LVL_Pos)
  132. #define FL_SVD_WARNING_THRESHOLD_GROUP12 (0xcU << SVD_CFGR_LVL_Pos)
  133. #define FL_SVD_WARNING_THRESHOLD_GROUP13 (0xdU << SVD_CFGR_LVL_Pos)
  134. #define FL_SVD_WARNING_THRESHOLD_GROUP14 (0xeU << SVD_CFGR_LVL_Pos)
  135. #define FL_SVD_WARNING_THRESHOLD_GROUP15 (0xfU << SVD_CFGR_LVL_Pos)
  136. #define FL_SVD_WORK_MODE_CONTINUOUS (0x0U << SVD_CFGR_MOD_Pos)
  137. #define FL_SVD_WORK_MODE_PERIODIC (0x1U << SVD_CFGR_MOD_Pos)
  138. #define FL_SVD_ENABLE_PERIOD_62MS (0x0U << SVD_CFGR_ITVL_Pos)
  139. #define FL_SVD_ENABLE_PERIOD_256MS (0x1U << SVD_CFGR_ITVL_Pos)
  140. #define FL_SVD_ENABLE_PERIOD_1000MS (0x2U << SVD_CFGR_ITVL_Pos)
  141. #define FL_SVD_ENABLE_PERIOD_4000MS (0x3U << SVD_CFGR_ITVL_Pos)
  142. #define FL_SVD_ADC_POWER_STATUS_RISING (0x0U << SVD_ISR_ADLVDO_Pos)
  143. #define FL_SVD_ADC_POWER_STATUS_FALLING (0x1U << SVD_ISR_ADLVDO_Pos)
  144. #define FL_SVD_POWER_STATUS_FALLING (0x0U << SVD_ISR_SVDO_Pos)
  145. #define FL_SVD_POWER_STATUS_RISING (0x1U << SVD_ISR_SVDO_Pos)
  146. #define FL_SVD_LATCHED_POWER_STATUS_FALLING (0x0U << SVD_ISR_SVDR_Pos)
  147. #define FL_SVD_LATCHED_POWER_STATUS_RISING (0x1U << SVD_ISR_SVDR_Pos)
  148. /**
  149. * @}
  150. */
  151. /* Exported functions ---------------------------------------------------------------------------------*/
  152. /** @defgroup SVD_FL_Exported_Functions SVD Exported Functions
  153. * @{
  154. */
  155. /**
  156. * @brief Set ADC SVD Level
  157. * @rmtoll CFGR ADSVD_SEL FL_SVD_SetADCThreshold
  158. * @param SVDx SVD instance
  159. * @param level This parameter can be one of the following values:
  160. * @arg @ref FL_SVD_ADC_THRESHOLD_3P300V
  161. * @arg @ref FL_SVD_ADC_THRESHOLD_3P514V
  162. * @arg @ref FL_SVD_ADC_THRESHOLD_3P729V
  163. * @arg @ref FL_SVD_ADC_THRESHOLD_3P943V
  164. * @arg @ref FL_SVD_ADC_THRESHOLD_4P157V
  165. * @arg @ref FL_SVD_ADC_THRESHOLD_4P371V
  166. * @arg @ref FL_SVD_ADC_THRESHOLD_4P586V
  167. * @arg @ref FL_SVD_ADC_THRESHOLD_4P800V
  168. * @retval None
  169. */
  170. __STATIC_INLINE void FL_SVD_SetADCThreshold(SVD_Type *SVDx, uint32_t level)
  171. {
  172. MODIFY_REG(SVDx->CFGR, SVD_CFGR_ADSVD_SEL_Msk, level);
  173. }
  174. /**
  175. * @brief Get ADC SVD Level
  176. * @rmtoll CFGR ADSVD_SEL FL_SVD_GetADCThreshold
  177. * @param SVDx SVD instance
  178. * @retval Returned value can be one of the following values:
  179. * @arg @ref FL_SVD_ADC_THRESHOLD_3P300V
  180. * @arg @ref FL_SVD_ADC_THRESHOLD_3P514V
  181. * @arg @ref FL_SVD_ADC_THRESHOLD_3P729V
  182. * @arg @ref FL_SVD_ADC_THRESHOLD_3P943V
  183. * @arg @ref FL_SVD_ADC_THRESHOLD_4P157V
  184. * @arg @ref FL_SVD_ADC_THRESHOLD_4P371V
  185. * @arg @ref FL_SVD_ADC_THRESHOLD_4P586V
  186. * @arg @ref FL_SVD_ADC_THRESHOLD_4P800V
  187. */
  188. __STATIC_INLINE uint32_t FL_SVD_GetADCThreshold(SVD_Type *SVDx)
  189. {
  190. return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_ADSVD_SEL_Msk));
  191. }
  192. /**
  193. * @brief Enable ADC SVD
  194. * @rmtoll CFGR ADSVD_EN FL_SVD_EnableADCMonitor
  195. * @param SVDx SVD instance
  196. * @retval None
  197. */
  198. __STATIC_INLINE void FL_SVD_EnableADCMonitor(SVD_Type *SVDx)
  199. {
  200. SET_BIT(SVDx->CFGR, SVD_CFGR_ADSVD_EN_Msk);
  201. }
  202. /**
  203. * @brief Get ADC SVD Enable Status
  204. * @rmtoll CFGR ADSVD_EN FL_SVD_IsEnabledADCMonitor
  205. * @param SVDx SVD instance
  206. * @retval State of bit (1 or 0).
  207. */
  208. __STATIC_INLINE uint32_t FL_SVD_IsEnabledADCMonitor(SVD_Type *SVDx)
  209. {
  210. return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_ADSVD_EN_Msk) == SVD_CFGR_ADSVD_EN_Msk);
  211. }
  212. /**
  213. * @brief Disable ADC SVD
  214. * @rmtoll CFGR ADSVD_EN FL_SVD_DisableADCMonitor
  215. * @param SVDx SVD instance
  216. * @retval None
  217. */
  218. __STATIC_INLINE void FL_SVD_DisableADCMonitor(SVD_Type *SVDx)
  219. {
  220. CLEAR_BIT(SVDx->CFGR, SVD_CFGR_ADSVD_EN_Msk);
  221. }
  222. /**
  223. * @brief Set SVD Threshold Level
  224. * @rmtoll CFGR LVL FL_SVD_SetWarningThreshold
  225. * @param SVDx SVD instance
  226. * @param level This parameter can be one of the following values:
  227. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP0
  228. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP1
  229. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP2
  230. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP3
  231. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP4
  232. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP5
  233. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP6
  234. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP7
  235. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP8
  236. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP9
  237. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP10
  238. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP11
  239. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP12
  240. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP13
  241. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP14
  242. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP15
  243. * @retval None
  244. */
  245. __STATIC_INLINE void FL_SVD_SetWarningThreshold(SVD_Type *SVDx, uint32_t level)
  246. {
  247. MODIFY_REG(SVDx->CFGR, SVD_CFGR_LVL_Msk, level);
  248. }
  249. /**
  250. * @brief Get SVD Threshold Level
  251. * @rmtoll CFGR LVL FL_SVD_GetWarningThreshold
  252. * @param SVDx SVD instance
  253. * @retval Returned value can be one of the following values:
  254. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP0
  255. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP1
  256. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP2
  257. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP3
  258. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP4
  259. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP5
  260. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP6
  261. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP7
  262. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP8
  263. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP9
  264. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP10
  265. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP11
  266. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP12
  267. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP13
  268. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP14
  269. * @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP15
  270. */
  271. __STATIC_INLINE uint32_t FL_SVD_GetWarningThreshold(SVD_Type *SVDx)
  272. {
  273. return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_LVL_Msk));
  274. }
  275. /**
  276. * @brief Enable SVD Digital Filtering
  277. * @rmtoll CFGR DFEN FL_SVD_EnableDigitalFilter
  278. * @param SVDx SVD instance
  279. * @retval None
  280. */
  281. __STATIC_INLINE void FL_SVD_EnableDigitalFilter(SVD_Type *SVDx)
  282. {
  283. SET_BIT(SVDx->CFGR, SVD_CFGR_DFEN_Msk);
  284. }
  285. /**
  286. * @brief Get SVD Digital Filtering Enable Status
  287. * @rmtoll CFGR DFEN FL_SVD_IsEnabledDigitalFilter
  288. * @param SVDx SVD instance
  289. * @retval State of bit (1 or 0).
  290. */
  291. __STATIC_INLINE uint32_t FL_SVD_IsEnabledDigitalFilter(SVD_Type *SVDx)
  292. {
  293. return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_DFEN_Msk) == SVD_CFGR_DFEN_Msk);
  294. }
  295. /**
  296. * @brief Disable SVD Digital Filtering
  297. * @rmtoll CFGR DFEN FL_SVD_DisableDigitalFilter
  298. * @param SVDx SVD instance
  299. * @retval None
  300. */
  301. __STATIC_INLINE void FL_SVD_DisableDigitalFilter(SVD_Type *SVDx)
  302. {
  303. CLEAR_BIT(SVDx->CFGR, SVD_CFGR_DFEN_Msk);
  304. }
  305. /**
  306. * @brief Set SVD Working Mode
  307. * @rmtoll CFGR MOD FL_SVD_SetWorkMode
  308. * @param SVDx SVD instance
  309. * @param mode This parameter can be one of the following values:
  310. * @arg @ref FL_SVD_WORK_MODE_CONTINUOUS
  311. * @arg @ref FL_SVD_WORK_MODE_PERIODIC
  312. * @retval None
  313. */
  314. __STATIC_INLINE void FL_SVD_SetWorkMode(SVD_Type *SVDx, uint32_t mode)
  315. {
  316. MODIFY_REG(SVDx->CFGR, SVD_CFGR_MOD_Msk, mode);
  317. }
  318. /**
  319. * @brief Get SVD Working Mode
  320. * @rmtoll CFGR MOD FL_SVD_GetWorkMode
  321. * @param SVDx SVD instance
  322. * @retval Returned value can be one of the following values:
  323. * @arg @ref FL_SVD_WORK_MODE_CONTINUOUS
  324. * @arg @ref FL_SVD_WORK_MODE_PERIODIC
  325. */
  326. __STATIC_INLINE uint32_t FL_SVD_GetWorkMode(SVD_Type *SVDx)
  327. {
  328. return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_MOD_Msk));
  329. }
  330. /**
  331. * @brief Enable External SVS Channel
  332. * @rmtoll CR SVSEN FL_SVD_EnableSVSChannel
  333. * @param SVDx SVD instance
  334. * @retval None
  335. */
  336. __STATIC_INLINE void FL_SVD_EnableSVSChannel(SVD_Type *SVDx)
  337. {
  338. SET_BIT(SVDx->CR, SVD_CR_SVSEN_Msk);
  339. }
  340. /**
  341. * @brief Get External SVS Channel Enable Status
  342. * @rmtoll CR SVSEN FL_SVD_IsEnabledSVSChannel
  343. * @param SVDx SVD instance
  344. * @retval State of bit (1 or 0).
  345. */
  346. __STATIC_INLINE uint32_t FL_SVD_IsEnabledSVSChannel(SVD_Type *SVDx)
  347. {
  348. return (uint32_t)(READ_BIT(SVDx->CR, SVD_CR_SVSEN_Msk) == SVD_CR_SVSEN_Msk);
  349. }
  350. /**
  351. * @brief Disable External SVS Channel
  352. * @rmtoll CR SVSEN FL_SVD_DisableSVSChannel
  353. * @param SVDx SVD instance
  354. * @retval None
  355. */
  356. __STATIC_INLINE void FL_SVD_DisableSVSChannel(SVD_Type *SVDx)
  357. {
  358. CLEAR_BIT(SVDx->CR, SVD_CR_SVSEN_Msk);
  359. }
  360. /**
  361. * @brief Enable SVD
  362. * @rmtoll CR EN FL_SVD_Enable
  363. * @param SVDx SVD instance
  364. * @retval None
  365. */
  366. __STATIC_INLINE void FL_SVD_Enable(SVD_Type *SVDx)
  367. {
  368. SET_BIT(SVDx->CR, SVD_CR_EN_Msk);
  369. }
  370. /**
  371. * @brief Get SVD Enable Status
  372. * @rmtoll CR EN FL_SVD_IsEnabled
  373. * @param SVDx SVD instance
  374. * @retval State of bit (1 or 0).
  375. */
  376. __STATIC_INLINE uint32_t FL_SVD_IsEnabled(SVD_Type *SVDx)
  377. {
  378. return (uint32_t)(READ_BIT(SVDx->CR, SVD_CR_EN_Msk) == SVD_CR_EN_Msk);
  379. }
  380. /**
  381. * @brief Disable SVD
  382. * @rmtoll CR EN FL_SVD_Disable
  383. * @param SVDx SVD instance
  384. * @retval None
  385. */
  386. __STATIC_INLINE void FL_SVD_Disable(SVD_Type *SVDx)
  387. {
  388. CLEAR_BIT(SVDx->CR, SVD_CR_EN_Msk);
  389. }
  390. /**
  391. * @brief Enable Power Fall Interrupt
  392. * @rmtoll IER PFIE FL_SVD_EnableIT_PowerFall
  393. * @param SVDx SVD instance
  394. * @retval None
  395. */
  396. __STATIC_INLINE void FL_SVD_EnableIT_PowerFall(SVD_Type *SVDx)
  397. {
  398. SET_BIT(SVDx->IER, SVD_IER_PFIE_Msk);
  399. }
  400. /**
  401. * @brief Get Power Fall Interrupt Status
  402. * @rmtoll IER PFIE FL_SVD_IsEnabledIT_PowerFall
  403. * @param SVDx SVD instance
  404. * @retval State of bit (1 or 0).
  405. */
  406. __STATIC_INLINE uint32_t FL_SVD_IsEnabledIT_PowerFall(SVD_Type *SVDx)
  407. {
  408. return (uint32_t)(READ_BIT(SVDx->IER, SVD_IER_PFIE_Msk) == SVD_IER_PFIE_Msk);
  409. }
  410. /**
  411. * @brief Disable Power Fall Interrupt
  412. * @rmtoll IER PFIE FL_SVD_DisableIT_PowerFall
  413. * @param SVDx SVD instance
  414. * @retval None
  415. */
  416. __STATIC_INLINE void FL_SVD_DisableIT_PowerFall(SVD_Type *SVDx)
  417. {
  418. CLEAR_BIT(SVDx->IER, SVD_IER_PFIE_Msk);
  419. }
  420. /**
  421. * @brief Enable Power Rise Interrupt
  422. * @rmtoll IER PRIE FL_SVD_EnableIT_PowerRise
  423. * @param SVDx SVD instance
  424. * @retval None
  425. */
  426. __STATIC_INLINE void FL_SVD_EnableIT_PowerRise(SVD_Type *SVDx)
  427. {
  428. SET_BIT(SVDx->IER, SVD_IER_PRIE_Msk);
  429. }
  430. /**
  431. * @brief Get Power Rise Interrupt Status
  432. * @rmtoll IER PRIE FL_SVD_IsEnabledIT_PowerRise
  433. * @param SVDx SVD instance
  434. * @retval State of bit (1 or 0).
  435. */
  436. __STATIC_INLINE uint32_t FL_SVD_IsEnabledIT_PowerRise(SVD_Type *SVDx)
  437. {
  438. return (uint32_t)(READ_BIT(SVDx->IER, SVD_IER_PRIE_Msk) == SVD_IER_PRIE_Msk);
  439. }
  440. /**
  441. * @brief Disable Power Rise Interrupt
  442. * @rmtoll IER PRIE FL_SVD_DisableIT_PowerRise
  443. * @param SVDx SVD instance
  444. * @retval None
  445. */
  446. __STATIC_INLINE void FL_SVD_DisableIT_PowerRise(SVD_Type *SVDx)
  447. {
  448. CLEAR_BIT(SVDx->IER, SVD_IER_PRIE_Msk);
  449. }
  450. /**
  451. * @brief Get ADC SVD Status
  452. * @rmtoll ISR ADLVDO FL_SVD_GetADCPowerStatus
  453. * @param SVDx SVD instance
  454. * @retval Returned value can be one of the following values:
  455. * @arg @ref FL_SVD_ADC_POWER_STATUS_RISING
  456. * @arg @ref FL_SVD_ADC_POWER_STATUS_FALLING
  457. */
  458. __STATIC_INLINE uint32_t FL_SVD_GetADCPowerStatus(SVD_Type *SVDx)
  459. {
  460. return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_ADLVDO_Msk));
  461. }
  462. /**
  463. * @brief Get SVD Status
  464. * @rmtoll ISR SVDO FL_SVD_GetCurrentPowerStatus
  465. * @param SVDx SVD instance
  466. * @retval Returned value can be one of the following values:
  467. * @arg @ref FL_SVD_POWER_STATUS_FALLING
  468. * @arg @ref FL_SVD_POWER_STATUS_RISING
  469. */
  470. __STATIC_INLINE uint32_t FL_SVD_GetCurrentPowerStatus(SVD_Type *SVDx)
  471. {
  472. return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_SVDO_Msk));
  473. }
  474. /**
  475. * @brief Get SVD Latched Status
  476. * @rmtoll ISR SVDR FL_SVD_GetLatchedPowerStatus
  477. * @param SVDx SVD instance
  478. * @retval Returned value can be one of the following values:
  479. * @arg @ref FL_SVD_LATCHED_POWER_STATUS_FALLING
  480. * @arg @ref FL_SVD_LATCHED_POWER_STATUS_RISING
  481. */
  482. __STATIC_INLINE uint32_t FL_SVD_GetLatchedPowerStatus(SVD_Type *SVDx)
  483. {
  484. return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_SVDR_Msk));
  485. }
  486. /**
  487. * @brief Get SVD Power Fall Flag
  488. * @rmtoll ISR PFF FL_SVD_IsActiveFlag_PowerFall
  489. * @param SVDx SVD instance
  490. * @retval State of bit (1 or 0).
  491. */
  492. __STATIC_INLINE uint32_t FL_SVD_IsActiveFlag_PowerFall(SVD_Type *SVDx)
  493. {
  494. return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_PFF_Msk) == (SVD_ISR_PFF_Msk));
  495. }
  496. /**
  497. * @brief Clear SVD Power Fall Flag
  498. * @rmtoll ISR PFF FL_SVD_ClearFlag_PowerFall
  499. * @param SVDx SVD instance
  500. * @retval None
  501. */
  502. __STATIC_INLINE void FL_SVD_ClearFlag_PowerFall(SVD_Type *SVDx)
  503. {
  504. WRITE_REG(SVDx->ISR, SVD_ISR_PFF_Msk);
  505. }
  506. /**
  507. * @brief Get SVD Power Rise Flag
  508. * @rmtoll ISR PRF FL_SVD_IsActiveFlag_PowerRise
  509. * @param SVDx SVD instance
  510. * @retval State of bit (1 or 0).
  511. */
  512. __STATIC_INLINE uint32_t FL_SVD_IsActiveFlag_PowerRise(SVD_Type *SVDx)
  513. {
  514. return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_PRF_Msk) == (SVD_ISR_PRF_Msk));
  515. }
  516. /**
  517. * @brief Clear SVD Power Rise Flag
  518. * @rmtoll ISR PRF FL_SVD_ClearFlag_PowerRise
  519. * @param SVDx SVD instance
  520. * @retval None
  521. */
  522. __STATIC_INLINE void FL_SVD_ClearFlag_PowerRise(SVD_Type *SVDx)
  523. {
  524. WRITE_REG(SVDx->ISR, SVD_ISR_PRF_Msk);
  525. }
  526. /**
  527. * @brief Enable SVD Reference
  528. * @rmtoll VSR EN FL_SVD_EnableReference
  529. * @param SVDx SVD instance
  530. * @param ref This parameter can be one of the following values:
  531. * @arg @ref FL_SVD_REFERENCE_1P2V
  532. * @arg @ref FL_SVD_REFERENCE_1P1V
  533. * @arg @ref FL_SVD_REFERENCE_1P0V
  534. * @retval None
  535. */
  536. __STATIC_INLINE void FL_SVD_EnableReference(SVD_Type *SVDx, uint32_t ref)
  537. {
  538. WRITE_REG(SVDx->VSR, ((ref & 0x7) << 0x0U));
  539. }
  540. /**
  541. * @brief Get SVD Reference Enable Status
  542. * @rmtoll VSR EN FL_SVD_IsEnabledReference
  543. * @param SVDx SVD instance
  544. * @param ref This parameter can be one of the following values:
  545. * @arg @ref FL_SVD_REFERENCE_1P2V
  546. * @arg @ref FL_SVD_REFERENCE_1P1V
  547. * @arg @ref FL_SVD_REFERENCE_1P0V
  548. * @retval State of bit (1 or 0).
  549. */
  550. __STATIC_INLINE uint32_t FL_SVD_IsEnabledReference(SVD_Type *SVDx, uint32_t ref)
  551. {
  552. return (uint32_t)(READ_BIT(SVDx->VSR, ((ref & 0x7) << 0x0U)) == ((ref & 0x7) << 0x0U));
  553. }
  554. /**
  555. * @brief Disable SVD Reference
  556. * @rmtoll VSR EN FL_SVD_DisableReference
  557. * @param SVDx SVD instance
  558. * @param ref This parameter can be one of the following values:
  559. * @arg @ref FL_SVD_REFERENCE_1P2V
  560. * @arg @ref FL_SVD_REFERENCE_1P1V
  561. * @arg @ref FL_SVD_REFERENCE_1P0V
  562. * @retval None
  563. */
  564. __STATIC_INLINE void FL_SVD_DisableReference(SVD_Type *SVDx, uint32_t ref)
  565. {
  566. CLEAR_BIT(SVDx->VSR, ((ref & 0x7) << 0x0U));
  567. }
  568. /**
  569. * @}
  570. */
  571. /** @defgroup SVD_FL_EF_Init Initialization and de-initialization functions
  572. * @{
  573. */
  574. FL_ErrorStatus FL_SVD_DeInit(SVD_Type *SVDx);
  575. FL_ErrorStatus FL_SVD_Init(SVD_Type *SVDx, FL_SVD_InitTypeDef *initStruct);
  576. void FL_SVD_StructInit(FL_SVD_InitTypeDef *initStruct);
  577. /**
  578. * @}
  579. */
  580. /**
  581. * @}
  582. */
  583. /**
  584. * @}
  585. */
  586. #ifdef __cplusplus
  587. }
  588. #endif
  589. #endif /* __FM33LC0XX_FL_SVD_H*/
  590. /*************************Py_Code_Generator Version: 0.1-0.11-0.2 @ 2020-09-25*************************/
  591. /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/