fm33lc0xx_fl_wwdt.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_wwdt.h
  4. * @author FMSH Application Team
  5. * @brief Head file of WWDT 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_WWDT_H
  23. #define __FM33LC0XX_FL_WWDT_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 WWDT WWDT
  33. * @brief WWDT FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup WWDT_FL_ES_INIT WWDT Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief WWDT Init Sturcture definition
  42. */
  43. typedef struct
  44. {
  45. /** 看门狗溢出周期 */
  46. uint32_t overflowPeriod;
  47. } FL_WWDT_InitTypeDef;
  48. /**
  49. * @}
  50. */
  51. /* Exported constants ---------------------------------------------------------------------------------*/
  52. /** @defgroup WWDT_FL_Exported_Constants WWDT Exported Constants
  53. * @{
  54. */
  55. #define WWDT_CR_CON_Pos (0U)
  56. #define WWDT_CR_CON_Msk (0x7fU << WWDT_CR_CON_Pos)
  57. #define WWDT_CR_CON WWDT_CR_CON_Msk
  58. #define WWDT_CFGR_CFG_Pos (0U)
  59. #define WWDT_CFGR_CFG_Msk (0x7U << WWDT_CFGR_CFG_Pos)
  60. #define WWDT_CFGR_CFG WWDT_CFGR_CFG_Msk
  61. #define WWDT_IER_IE_Pos (0U)
  62. #define WWDT_IER_IE_Msk (0x1U << WWDT_IER_IE_Pos)
  63. #define WWDT_IER_IE WWDT_IER_IE_Msk
  64. #define WWDT_ISR_IF_Pos (0U)
  65. #define WWDT_ISR_IF_Msk (0x1U << WWDT_ISR_IF_Pos)
  66. #define WWDT_ISR_IF WWDT_ISR_IF_Msk
  67. #define FL_WWDT_KEY_ENABLE (0x5AU << WWDT_CR_CON_Pos)
  68. #define FL_WWDT_RELOAD_ENABLE (0xACU << WWDT_CR_CON_Pos)
  69. #define FL_WWDT_PERIOD_1CNT (0x0U << WWDT_CFGR_CFG_Pos)
  70. #define FL_WWDT_PERIOD_4CNT (0x1U << WWDT_CFGR_CFG_Pos)
  71. #define FL_WWDT_PERIOD_16CNT (0x2U << WWDT_CFGR_CFG_Pos)
  72. #define FL_WWDT_PERIOD_64CNT (0x3U << WWDT_CFGR_CFG_Pos)
  73. #define FL_WWDT_PERIOD_128CNT (0x4U << WWDT_CFGR_CFG_Pos)
  74. #define FL_WWDT_PERIOD_256CNT (0x5U << WWDT_CFGR_CFG_Pos)
  75. #define FL_WWDT_PERIOD_512CNT (0x6U << WWDT_CFGR_CFG_Pos)
  76. #define FL_WWDT_PERIOD_1024CNT (0x7U << WWDT_CFGR_CFG_Pos)
  77. /**
  78. * @}
  79. */
  80. /* Exported functions ---------------------------------------------------------------------------------*/
  81. /** @defgroup WWDT_FL_Exported_Functions WWDT Exported Functions
  82. * @{
  83. */
  84. /**
  85. * @brief WWDT enable counter
  86. * @rmtoll CR CON FL_WWDT_Enable
  87. * @param WWDTx WWDT instance
  88. * @retval None
  89. */
  90. __STATIC_INLINE void FL_WWDT_Enable(WWDT_Type *WWDTx)
  91. {
  92. WRITE_REG(WWDTx->CR, FL_WWDT_KEY_ENABLE);
  93. }
  94. /**
  95. * @brief WWDT reset counter
  96. * @rmtoll CR CON FL_WWDT_ReloadCounter
  97. * @param WWDTx WWDT instance
  98. * @retval None
  99. */
  100. __STATIC_INLINE void FL_WWDT_ReloadCounter(WWDT_Type *WWDTx)
  101. {
  102. WRITE_REG(WWDTx->CR, FL_WWDT_RELOAD_ENABLE);
  103. }
  104. /**
  105. * @brief Set WWDT overflow period
  106. * @rmtoll CFGR CFG FL_WWDT_SetPeriod
  107. * @param WWDTx WWDT instance
  108. * @param period This parameter can be one of the following values:
  109. * @arg @ref FL_WWDT_PERIOD_1CNT
  110. * @arg @ref FL_WWDT_PERIOD_4CNT
  111. * @arg @ref FL_WWDT_PERIOD_16CNT
  112. * @arg @ref FL_WWDT_PERIOD_64CNT
  113. * @arg @ref FL_WWDT_PERIOD_128CNT
  114. * @arg @ref FL_WWDT_PERIOD_256CNT
  115. * @arg @ref FL_WWDT_PERIOD_512CNT
  116. * @arg @ref FL_WWDT_PERIOD_1024CNT
  117. * @retval None
  118. */
  119. __STATIC_INLINE void FL_WWDT_SetPeriod(WWDT_Type *WWDTx, uint32_t period)
  120. {
  121. MODIFY_REG(WWDTx->CFGR, WWDT_CFGR_CFG_Msk, period);
  122. }
  123. /**
  124. * @brief Get WWDT overflow period
  125. * @rmtoll CFGR CFG FL_WWDT_GetPeriod
  126. * @param WWDTx WWDT instance
  127. * @retval Returned value can be one of the following values:
  128. * @arg @ref FL_WWDT_PERIOD_1CNT
  129. * @arg @ref FL_WWDT_PERIOD_4CNT
  130. * @arg @ref FL_WWDT_PERIOD_16CNT
  131. * @arg @ref FL_WWDT_PERIOD_64CNT
  132. * @arg @ref FL_WWDT_PERIOD_128CNT
  133. * @arg @ref FL_WWDT_PERIOD_256CNT
  134. * @arg @ref FL_WWDT_PERIOD_512CNT
  135. * @arg @ref FL_WWDT_PERIOD_1024CNT
  136. */
  137. __STATIC_INLINE uint32_t FL_WWDT_GetPeriod(WWDT_Type *WWDTx)
  138. {
  139. return (uint32_t)(READ_BIT(WWDTx->CFGR, WWDT_CFGR_CFG_Msk));
  140. }
  141. /**
  142. * @brief Get WWDT Counter value
  143. * @rmtoll CNT FL_WWDT_ReadCounter
  144. * @param WWDTx WWDT instance
  145. * @retval
  146. */
  147. __STATIC_INLINE uint32_t FL_WWDT_ReadCounter(WWDT_Type *WWDTx)
  148. {
  149. return (uint32_t)(READ_BIT(WWDTx->CNT, (0xfffU << 0U)) >> 0U);
  150. }
  151. /**
  152. * @brief WWDT interrupt enable
  153. * @rmtoll IER IE FL_WWDT_EnableIT_NearOverflow
  154. * @param WWDTx WWDT instance
  155. * @retval None
  156. */
  157. __STATIC_INLINE void FL_WWDT_EnableIT_NearOverflow(WWDT_Type *WWDTx)
  158. {
  159. SET_BIT(WWDTx->IER, WWDT_IER_IE_Msk);
  160. }
  161. /**
  162. * @brief WWDT interrupt enable status
  163. * @rmtoll IER IE FL_WWDT_IsEnabledIT_NearOverflow
  164. * @param WWDTx WWDT instance
  165. * @retval State of bit (1 or 0).
  166. */
  167. __STATIC_INLINE uint32_t FL_WWDT_IsEnabledIT_NearOverflow(WWDT_Type *WWDTx)
  168. {
  169. return (uint32_t)(READ_BIT(WWDTx->IER, WWDT_IER_IE_Msk) == WWDT_IER_IE_Msk);
  170. }
  171. /**
  172. * @brief WWDT interrupt disable
  173. * @rmtoll IER IE FL_WWDT_DisableIT_NearOverflow
  174. * @param WWDTx WWDT instance
  175. * @retval None
  176. */
  177. __STATIC_INLINE void FL_WWDT_DisableIT_NearOverflow(WWDT_Type *WWDTx)
  178. {
  179. CLEAR_BIT(WWDTx->IER, WWDT_IER_IE_Msk);
  180. }
  181. /**
  182. * @brief Get WWDT 75% overflow flag
  183. * @rmtoll ISR IF FL_WWDT_IsActiveFlag_NearOverflow
  184. * @param WWDTx WWDT instance
  185. * @retval State of bit (1 or 0).
  186. */
  187. __STATIC_INLINE uint32_t FL_WWDT_IsActiveFlag_NearOverflow(WWDT_Type *WWDTx)
  188. {
  189. return (uint32_t)(READ_BIT(WWDTx->ISR, WWDT_ISR_IF_Msk) == (WWDT_ISR_IF_Msk));
  190. }
  191. /**
  192. * @brief Clear WWDT 75% overflow flag
  193. * @rmtoll ISR IF FL_WWDT_ClearFlag_NearOverflow
  194. * @param WWDTx WWDT instance
  195. * @retval None
  196. */
  197. __STATIC_INLINE void FL_WWDT_ClearFlag_NearOverflow(WWDT_Type *WWDTx)
  198. {
  199. WRITE_REG(WWDTx->ISR, WWDT_ISR_IF_Msk);
  200. }
  201. /**
  202. * @}
  203. */
  204. /** @defgroup WWDT_FL_EF_Init Initialization and de-initialization functions
  205. * @{
  206. */
  207. FL_ErrorStatus FL_WWDT_DeInit(WWDT_Type *WWDTx);
  208. FL_ErrorStatus FL_WWDT_Init(WWDT_Type *WWDTx, FL_WWDT_InitTypeDef *WWDT_InitStruct);
  209. void FL_WWDT_StructInit(FL_WWDT_InitTypeDef *WWDT_InitStruct);
  210. /**
  211. * @}
  212. */
  213. /**
  214. * @}
  215. */
  216. /**
  217. * @}
  218. */
  219. #ifdef __cplusplus
  220. }
  221. #endif
  222. #endif /* __FM33LC0XX_FL_WWDT_H*/
  223. /*************************Py_Code_Generator Version: 0.1-0.11-0.2 @ 2020-09-23*************************/
  224. /*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/