ls1c_wdog.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-05-06 sundm75 first version
  9. */
  10. #include "ls1c.h"
  11. #include "ls1c_wdog.h"
  12. /*
  13. 系统先配置看门狗使能位 WDT_EN;
  14. 然后配置看门狗计数器的初始值 WDT_TIMER;
  15. 当设置 WDT_SET 后,计数器开始减计数;
  16. 当还没有减到 0 时,重置看门狗计数器,系统不会重启;
  17. 当看门狗计数器减到 0 时,则系统重启。
  18. */
  19. static unsigned int WDT_timer = 0;
  20. /* 暂时为空 */
  21. unsigned int Wdog_Init(void)
  22. {
  23. return 0;
  24. }
  25. /* 配置看门狗使能寄存器(WDT_EN) */
  26. unsigned int Wdog_Enable(void)
  27. {
  28. unsigned int ctrl;
  29. ctrl = (WDT_EN);
  30. ctrl |= 0x01;
  31. WDT_EN = ctrl;
  32. return 0;
  33. }
  34. /* 配置看门狗失能寄存器(WDT_EN) */
  35. unsigned int Wdog_Disable(void)
  36. {
  37. unsigned int ctrl;
  38. ctrl = (WDT_EN);
  39. ctrl &= ~0x01;
  40. WDT_EN = ctrl;
  41. return 0;
  42. }
  43. /* 配置看门狗设置寄存器 (WDT_SET) */
  44. unsigned int Wdog_Set(void)
  45. {
  46. unsigned int ctrl;
  47. ctrl = (WDT_SET);
  48. ctrl |= 0x01;
  49. WDT_SET = ctrl;
  50. return 0;
  51. }
  52. /* 配置看门狗设置寄存器 (WDT_SET) */
  53. unsigned int Wdog_Reset(void)
  54. {
  55. unsigned int ctrl;
  56. ctrl = (WDT_SET);
  57. ctrl &= ~0x01;
  58. WDT_SET = ctrl;
  59. return 0;
  60. }
  61. /* 获得看门狗计数器(WDT_timer) 的值*/
  62. unsigned int Wdog_GetValue(void)
  63. {
  64. unsigned int cnt;
  65. cnt = (WDT_TIMER);
  66. return cnt;
  67. }
  68. /* 配置看门狗计数器(WDT_timer)的值*/
  69. unsigned int Wdog_LoadValue(unsigned int cnt)
  70. {
  71. WDT_TIMER = cnt;
  72. WDT_timer = cnt;
  73. return 0;
  74. }
  75. /* 获得看门狗计数器设定值 */
  76. unsigned int Wdog_GetPreValue(void)
  77. {
  78. return WDT_timer;
  79. }