wdt.c 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. /*************************************************************************************
  2. * Copyright (C) 2017, Xiaohua Semiconductor Co.,Ltd All rights reserved.
  3. *
  4. * This software is owned and published by:
  5. * Xiaohua Semiconductor Co.,Ltd ("XHSC").
  6. *
  7. * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
  8. * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
  9. *
  10. * This software contains source code for use with XHSC
  11. * components. This software is licensed by XHSC to be adapted only
  12. * for use in systems utilizing XHSC components. XHSC shall not be
  13. * responsible for misuse or illegal use of this software for devices not
  14. * supported herein. XHSC is providing this software "AS IS" and will
  15. * not be responsible for issues arising from incorrect user implementation
  16. * of the software.
  17. *
  18. * Disclaimer:
  19. * XHSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
  20. * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
  21. * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
  22. * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
  23. * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
  24. * WARRANTY OF NONINFRINGEMENT.
  25. * XHSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
  26. * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
  27. * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
  28. * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
  29. * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
  30. * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
  31. * SAVINGS OR PROFITS,
  32. * EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  33. * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
  34. * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
  35. * FROM, THE SOFTWARE.
  36. *
  37. * This software may be replicated in part or whole for the licensed use,
  38. * with the restriction that this Disclaimer and Copyright notice must be
  39. * included with each copy of this software, whether used in part or whole,
  40. * at all times.
  41. */
  42. /******************************************************************************/
  43. /** \file wdt.c
  44. **
  45. ** WDT function driver API.
  46. ** @link WdtGroup Some description @endlink
  47. **
  48. ** - 2017-05-17 1.0 CJ First version for Device Driver Library of Module.
  49. **
  50. ******************************************************************************/
  51. /******************************************************************************/
  52. /* Include files */
  53. /******************************************************************************/
  54. #include "wdt.h"
  55. /**
  56. ******************************************************************************
  57. ** \defgroup WdtGroup
  58. **
  59. ******************************************************************************/
  60. //@{
  61. /******************************************************************************/
  62. /* Local function prototypes ('static') */
  63. /******************************************************************************/
  64. /**
  65. ******************************************************************************
  66. ** \brief WDT溢出时间设置函数
  67. **
  68. ** \param [in] u8LoadValue 溢出时间
  69. **
  70. ** \retval 无
  71. **
  72. ******************************************************************************/
  73. void Wdt_WriteWdtLoad(uint8_t u8LoadValue)
  74. {
  75. M0P_WDT->CON_f.WOV = u8LoadValue;
  76. }
  77. /**
  78. ******************************************************************************
  79. ** \brief WDT初始化函数
  80. **
  81. ** \param [in] enFunc @ref en_wdt_func_t
  82. ** \param [in] enTime @ref en_wdt_time_t
  83. **
  84. ** \retval Ok
  85. **
  86. ******************************************************************************/
  87. en_result_t Wdt_Init(en_wdt_func_t enFunc, en_wdt_time_t enTime)
  88. {
  89. en_result_t enRet = Error;
  90. Wdt_WriteWdtLoad(enTime);
  91. M0P_WDT->CON_f.WINT_EN = enFunc;
  92. enRet = Ok;
  93. return enRet;
  94. }
  95. /**
  96. ******************************************************************************
  97. ** \brief WDT复位及启动函数
  98. **
  99. ** \param [in] 无
  100. **
  101. ** \retval 无
  102. **
  103. ******************************************************************************/
  104. void Wdt_Start(void)
  105. {
  106. M0P_WDT->RST = 0x1E;
  107. M0P_WDT->RST = 0xE1;
  108. }
  109. /**
  110. ******************************************************************************
  111. ** \brief WDT喂狗
  112. **
  113. ** \param [in] 无
  114. **
  115. ** \retval Ok
  116. **
  117. ******************************************************************************/
  118. void Wdt_Feed(void)
  119. {
  120. M0P_WDT->RST = 0x1E;
  121. M0P_WDT->RST = 0xE1;
  122. }
  123. /**
  124. ******************************************************************************
  125. ** \brief WDT中断标志清除
  126. **
  127. ** \param [in] 无
  128. **
  129. ** \retval Ok
  130. **
  131. ******************************************************************************/
  132. void Wdt_IrqClr(void)
  133. {
  134. M0P_WDT->RST = 0x1E;
  135. M0P_WDT->RST = 0xE1;
  136. }
  137. /**
  138. ******************************************************************************
  139. ** \brief WDT读取当前计数值函数
  140. **
  141. ** \param [in] 无
  142. **
  143. ** \retval 计数值
  144. **
  145. ******************************************************************************/
  146. uint8_t Wdt_ReadWdtValue(void)
  147. {
  148. uint8_t u8Count;
  149. u8Count = M0P_WDT->CON_f.WCNTL;
  150. return u8Count;
  151. }
  152. /**
  153. ******************************************************************************
  154. ** \brief WDT读取当前运行状态
  155. **
  156. ** \param [in] 无
  157. **
  158. ** \retval 状态值
  159. **
  160. ******************************************************************************/
  161. boolean_t Wdt_ReadwdtStatus(void)
  162. {
  163. if(M0P_WDT->CON&0x10u)
  164. {
  165. return TRUE;
  166. }
  167. else
  168. {
  169. return FALSE;
  170. }
  171. }
  172. /**
  173. *******************************************************************************
  174. ** \brief WDT 中断状态标记获取
  175. **
  176. **
  177. ** \retval 中断状态
  178. ******************************************************************************/
  179. boolean_t Wdt_GetIrqStatus(void)
  180. {
  181. if(M0P_WDT->CON&0x80u)
  182. {
  183. return TRUE;
  184. }
  185. else
  186. {
  187. return FALSE;
  188. }
  189. }
  190. //@} // WdtGroup