lib_wdt.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
  3. *文件名: lib_wdt.c
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/02/04
  7. *描 述: 看门狗模块库函数
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #include "lib_wdt.h"
  12. /*************************************
  13. 函数名:IWDT_Init
  14. 描 述:IWDT初始化
  15. 输入值:初始化结构体
  16. 返回值:无
  17. **************************************/
  18. void IWDT_Init(IWDT_InitStruType *WDT_InitStruct)
  19. {
  20. uint32_t tmp;
  21. if (WDT_InitStruct->WDT_Clock != WDT_CLOCK_PCLK)
  22. tmp = (uint32_t)(32 * WDT_InitStruct->WDT_Tms);
  23. else
  24. tmp = SystemCoreClock / 1000 * WDT_InitStruct->WDT_Tms;
  25. IWDT->LOAD.LOAD = tmp;
  26. IWDT->CON.CLKS = WDT_InitStruct->WDT_Clock;
  27. IWDT->CON.IE = WDT_InitStruct->WDT_IE;
  28. IWDT->CON.RSTEN = WDT_InitStruct->WDT_Rst;
  29. return;
  30. }
  31. /*************************************
  32. 函数名:IWDT_SetReloadValue
  33. 描 述:设置WDT重载的初值
  34. 输入值:初始值,32-bit无符号整数
  35. 返回值:无
  36. **************************************/
  37. void IWDT_SetReloadValue(uint32_t Value)
  38. {
  39. IWDT->LOAD.LOAD = Value;
  40. return;
  41. }
  42. /*************************************
  43. 函数名:IWDT_GetValue
  44. 描 述:获取WDT当前值
  45. 输入值:无
  46. 返回值:当前值
  47. **************************************/
  48. uint32_t IWDT_GetValue(void)
  49. {
  50. return (uint32_t)IWDT->VALUE.VALUE;
  51. }
  52. /*************************************
  53. 函数名:IWDT_GetFlagStatus
  54. 描 述:获取WDT中断状态
  55. 输入值:无
  56. 返回值:SET/RESET
  57. **************************************/
  58. FlagStatus IWDT_GetFlagStatus(void)
  59. {
  60. FlagStatus bitstatus = RESET;
  61. if (IWDT->RIS.WDTIF != RESET)
  62. bitstatus = SET;
  63. return bitstatus;
  64. }
  65. /*************************************
  66. 函数名:IWDT_GetITStatus
  67. 描 述:获取WDT使能中断状态
  68. 输入值:无
  69. 返回值:SET/RESET
  70. **************************************/
  71. FlagStatus IWDT_GetITStatus(void)
  72. {
  73. FlagStatus bitstatus = RESET;
  74. if (IWDT->CON.IE != RESET)
  75. bitstatus = SET;
  76. return bitstatus;
  77. }
  78. /*************************************
  79. 函数名:WWDT_Init
  80. 描 述:WWDT初始化
  81. 输入值:初始化结构体
  82. 返回值:无
  83. **************************************/
  84. void WWDT_Init(WWDT_InitStruType *WDT_InitStruct)
  85. {
  86. uint32_t tmp;
  87. if (WDT_InitStruct->WDT_Clock != WDT_CLOCK_PCLK)
  88. tmp = (uint32_t)(32 * WDT_InitStruct->WDT_Tms);
  89. else
  90. tmp = SystemCoreClock / 1000 * WDT_InitStruct->WDT_Tms;
  91. WWDT->LOAD.LOAD = tmp;
  92. WWDT->CON.CLKS = WDT_InitStruct->WDT_Clock;
  93. WWDT->CON.IE = WDT_InitStruct->WDT_IE;
  94. WWDT->CON.RSTEN = WDT_InitStruct->WDT_Rst;
  95. WWDT->CON.WWDTWIN = WDT_InitStruct->WDT_Win;
  96. return;
  97. }
  98. /*************************************
  99. 函数名:WWDT_SetReloadValue
  100. 描 述:设置WDT重载的初值
  101. 输入值:初始值,32-bit无符号整数
  102. 返回值:无
  103. **************************************/
  104. void WWDT_SetReloadValue(uint32_t Value)
  105. {
  106. WWDT->LOAD.LOAD = Value;
  107. return;
  108. }
  109. /*************************************
  110. 函数名:WWDT_GetValue
  111. 描 述:获取WDT当前值
  112. 输入值:无
  113. 返回值:当前值
  114. **************************************/
  115. uint32_t WWDT_GetValue(void)
  116. {
  117. return (uint32_t)WWDT->VALUE.VALUE;
  118. }
  119. /*************************************
  120. 函数名:WWDT_GetFlagStatus
  121. 描 述:获取WDT中断状态
  122. 输入值:无
  123. 返回值:SET/RESET
  124. **************************************/
  125. FlagStatus WWDT_GetFlagStatus(void)
  126. {
  127. FlagStatus bitstatus = RESET;
  128. if (WWDT->RIS.WWDTIF != RESET)
  129. bitstatus = SET;
  130. return bitstatus;
  131. }
  132. /*************************************
  133. 函数名:WWDT_GetIEStatus
  134. 描 述:获取WDT中断使能状态
  135. 输入值:无
  136. 返回值:SET/RESET
  137. **************************************/
  138. FlagStatus WWDT_GetITStatus(void)
  139. {
  140. FlagStatus bitstatus = RESET;
  141. if (WWDT->CON.IE != RESET)
  142. bitstatus = SET;
  143. return bitstatus;
  144. }
  145. /*************************END OF FILE**********************/