yc_wdt.c 978 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "yc_wdt.h"
  2. #define WDT_ENABLE_BIT_Mask 6
  3. #define WDT_MODE_BIT_Mask 5
  4. #define SYSCTRL_WDT_EN_BIT_Mask 1
  5. /**************the value of feed dog************/
  6. #define COUNTER_RELOAD_KEY 0x5937
  7. void WDT_SetReload(uint32_t Reload)
  8. {
  9. uint32_t wdt_config = 0;
  10. _ASSERT(ISWDTRELOAD(Reload));
  11. wdt_config = WD_CONFIG;
  12. wdt_config &= 0xE0;
  13. wdt_config |= Reload;
  14. WD_CONFIG = wdt_config;
  15. }
  16. void WDT_ReloadCounter(void)
  17. {
  18. WD_KICK = COUNTER_RELOAD_KEY;
  19. }
  20. void WDT_Enable(void)
  21. {
  22. WD_CONFIG |= (1 << WDT_ENABLE_BIT_Mask);
  23. }
  24. void WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode)
  25. {
  26. WD_CONFIG &= ~(1 << WDT_MODE_BIT_Mask);
  27. WD_CONFIG |= (WDT_Mode << WDT_MODE_BIT_Mask);
  28. if (WDT_CPUReset == WDT_Mode)
  29. {
  30. SYSCTRL_RST_EN |= (1 << 1);
  31. }
  32. else
  33. {
  34. SYSCTRL_RST_EN &= ~(1 << 1);
  35. }
  36. }
  37. ITStatus WDT_GetITStatus(void)
  38. {
  39. return (ITStatus)(WD_KICK & 1);
  40. }
  41. void WDT_ClearITPendingBit(void)
  42. {
  43. WD_CLEAR = 1;
  44. }