yc_wdt.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. * Copyright (c) 2006-2020, YICHIP Development Team
  3. * @file yc_wdt.c
  4. * @brief This file provides all the WDT firmware functions.
  5. *
  6. * Change Logs:
  7. * Date Author Version Notes
  8. * 2021-01-04 yangzhengfeng V1.0.0 the first version
  9. */
  10. #include "yc_wdt.h"
  11. /**
  12. * @brief Set WDT Clk Div
  13. * @param Wdtclkdiv: Wdtclkdiv value equal 1 to 16
  14. * @retval none
  15. */
  16. void WDT_CLKDIV(uint32_t Wdtclkdiv)
  17. {
  18. _ASSERT(IS_WDT_CLKDI(Wdtclkdiv));
  19. MWDT->CONFIG.bit.CLK_DIV = Wdtclkdiv;
  20. }
  21. /**
  22. * @brief Set reload counter
  23. * @param Reload: Reload counter equal to 2 to 31
  24. * @retval none
  25. */
  26. void WDT_SetReload(uint32_t Reload)
  27. {
  28. _ASSERT(IS_WDT_RELOAD(Reload));
  29. MWDT->CONFIG.bit.RELOAD = Reload;
  30. }
  31. /**
  32. * @brief Feed the watchdog function
  33. * @param none
  34. * @retval none
  35. */
  36. void WDT_ReloadCounter(void)
  37. {
  38. MWDT->KICK.reg = COUNTER_RELOAD_KEY;
  39. }
  40. /**
  41. * @brief Enable WDT
  42. * @param none
  43. * @retval none
  44. */
  45. void WDT_Enable(void)
  46. {
  47. MWDT->CONFIG.bit.EN = ENABLE;
  48. }
  49. /**
  50. * @brief Set WDT mode
  51. * @param WDT_Mode : Select the following values :
  52. * WDT_CPUReset
  53. * WDT_Interrupt.
  54. * @retval none
  55. * @description If Select WDT_CPUReset Mode,the bit for WDT RESET will be set;if
  56. * Select WDT_Interrupt the bit for WDT RESET will
  57. */
  58. void WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode)
  59. {
  60. _ASSERT(IS_WDT_MODE(WDT_Mode));
  61. if(WDT_CPUReset == WDT_Mode)
  62. {
  63. MWDT->CONFIG.bit.MODE = WDT_CPUReset;
  64. MRSTGEN->RST_EN.bit.WDT = ENABLE;
  65. }
  66. else if(WDT_Interrupt == WDT_Mode)
  67. {
  68. MWDT->CONFIG.bit.MODE = WDT_Interrupt;
  69. MRSTGEN->RST_EN.bit.WDT = DISABLE;
  70. }
  71. }
  72. /**
  73. * @brief Get interrupt Status
  74. * @param none
  75. * @retval SET:interrupt ocuured.
  76. */
  77. uint8_t WDT_GetITStatus(void)
  78. {
  79. uint16_t ret;
  80. ret = MWDT->IRQ_STATUS.bit.STATE;
  81. return ret ;
  82. }
  83. /**
  84. * @brief Clear interrupt
  85. * @param none
  86. * @retval none
  87. */
  88. void WDT_ClearITPendingBit(void)
  89. {
  90. MWDT->CLEAR.reg = 1;
  91. }
  92. /************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/