You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
4.2 KiB

4 years ago
  1. /*********************************************************
  2. *Copyright (C), 2015, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *: lib_wdt.h
  4. * : AE Team
  5. * : V1.01
  6. * : 2021/01/12
  7. * : WDT模块库函数头文件
  8. * :
  9. 使
  10. **********************************************************/
  11. #ifndef __LIBWDT_H__
  12. #define __LIBWDT_H__
  13. #include "ES8P5066.h"
  14. #include "type.h"
  15. /************************************************WWDT*************************************************/
  16. /* WWWDT时钟选择 */
  17. typedef enum
  18. {
  19. WWDT_CLOCK_PCLK = 0x0, /* PCLK */
  20. WWDT_CLOCK_WDT = 0x1, /* WDT时钟源,32kHz */
  21. } WWDT_TYPE_CLKS;
  22. /* WWDT禁止喂狗窗口选择 */
  23. typedef enum
  24. {
  25. WDT_WIN_25 = 0x0, /* 25%窗口内禁止,窗口内喂狗将复位 */
  26. WDT_WIN_50 = 0x1, /* 50%窗口内禁止,窗口内喂狗将复位 */
  27. WDT_WIN_75 = 0x2, /* 75%窗口内禁止,窗口内喂狗将复位 */
  28. WDT_WIN_100 = 0x3, /* 不禁止喂狗,喂狗将使看门狗计数器重载 */
  29. } WWDT_TYPE_WWDTWIN;
  30. /* 初始化结构体 */
  31. typedef struct
  32. {
  33. uint32_t WDT_Tms; /* 定时时间,单位ms */
  34. TYPE_FUNCEN WDT_IE; /* 中断使能 */
  35. TYPE_FUNCEN WDT_Rst; /* 复位使能 */
  36. WWDT_TYPE_CLKS WDT_Clock; /* 时钟选择 */
  37. WWDT_TYPE_WWDTWIN WDT_Win; /* 禁止喂狗窗口选择 */
  38. } WWDT_InitStruType;
  39. #define WWDT_RegUnLock() (WWDT->LOCK.Word = 0x1ACCE551)
  40. #define WWDT_RegLock() (WWDT->LOCK.Word = 0x0)
  41. #define WWDT_Enable() {WWDT_RegUnLock();WWDT->CON.EN = 1;WWDT_RegLock();}
  42. #define WWDT_Disable() {WWDT_RegUnLock();WWDT->CON.EN = 0;WWDT_RegLock();}
  43. #define WWDT_Clear() {WWDT_RegUnLock();WWDT->INTCLR.INTCLR = 0;WWDT_RegLock();}
  44. #define WWDT_ITEnable() {WWDT_RegUnLock();WWDT->CON.IE = 1;WWDT_RegLock();}
  45. #define WWDT_ITDisable() {WWDT_RegUnLock();WWDT->CON.IE = 0;WWDT_RegLock();}
  46. #define wwdt_RstEnable() {wwdt_RegUnLock();wwdt->CON.RSTEN = 1;wwdt_RegLock();}
  47. #define wwdt_RstDisable() {wwdt_RegUnLock();wwdt->CON.RSTEN = 0;wwdt_RegLock();}
  48. #define wwdt_CLOCK_PCLK() {wwdt_RegUnLock();wwdt->CON.CLKS = 0;wwdt_RegLock();}
  49. #define wwdt_CLOCK_WDT() {wwdt_RegUnLock();wwdt->CON.CLKS = 1;wwdt_RegLock();}
  50. void WWDT_Init(WWDT_InitStruType *WWDT_InitStruct);
  51. void WWDT_SetReloadValue(uint32_t Value);
  52. uint32_t WWDT_GetValue(void);
  53. FlagStatus WWDT_GetFlagStatus(void);
  54. /************************************************IWDT*************************************************/
  55. /* WIWDT时钟选择 */
  56. typedef enum
  57. {
  58. IWDT_CLOCK_PCLK = 0x0, /* PCLK */
  59. IWDT_CLOCK_WDT = 0x1, /* WDT时钟源,32kHz */
  60. } IWDT_TYPE_CLKS;
  61. /* 初始化结构体 */
  62. typedef struct
  63. {
  64. uint32_t WDT_Tms; /* 定时时间,单位ms */
  65. TYPE_FUNCEN WDT_IE; /* 中断使能 */
  66. TYPE_FUNCEN WDT_Rst; /* 复位使能 */
  67. IWDT_TYPE_CLKS WDT_Clock; /* 时钟选择 */
  68. } IWDT_InitStruType;
  69. #define IWDT_RegUnLock() (IWDT->LOCK.Word = 0x1ACCE551)
  70. #define IWDT_RegLock() (IWDT->LOCK.Word = 0x0)
  71. #define IWDT_Enable() {IWDT_RegUnLock();IWDT->CON.EN = 1;IWDT_RegLock();}
  72. #define IWDT_Disable() {IWDT_RegUnLock();IWDT->CON.EN = 0;IWDT_RegLock();}
  73. #define IWDT_Clear() {IWDT_RegUnLock();IWDT->INTCLR.Word = 0;IWDT_RegLock();}
  74. #define IWDT_ITEnable() {IWDT_RegUnLock();IWDT->CON.IE = 1;IWDT_RegLock();}
  75. #define IWDT_ITDisable() {IWDT_RegUnLock();IWDT->CON.IE = 0;IWDT_RegLock();}
  76. #define IWDT_RstEnable() {IWDT_RegUnLock();IWDT->CON.RSTEN = 1;IWDT_RegLock();}
  77. #define IWDT_RstDisable() {IWDT_RegUnLock();IWDT->CON.RSTEN = 0;IWDT_RegLock();}
  78. #define IWDT_CLOCK_PCLK() {IWDT_RegUnLock();IWDT->CON.CLKS = 0;IWDT_RegLock();}
  79. #define IWDT_CLOCK_WDT() {IWDT_RegUnLock();IWDT->CON.CLKS = 1;IWDT_RegLock();}
  80. void IWDT_Init(IWDT_InitStruType *IWDT_InitStruct);
  81. void IWDT_SetReloadValue(uint32_t Value);
  82. uint32_t IWDT_GetValue(void);
  83. FlagStatus IWDT_GetFlagStatus(void);
  84. /************************************************END*************************************************/
  85. #endif