wdt_reg.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. /**************************************************************************//**
  2. * @file wdt_reg.h
  3. * @version V1.00
  4. * @brief WDT register definition header file
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. * @copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
  8. *****************************************************************************/
  9. #ifndef __WDT_REG_H__
  10. #define __WDT_REG_H__
  11. #if defined ( __CC_ARM )
  12. #pragma anon_unions
  13. #endif
  14. /**
  15. @addtogroup REGISTER Control Register
  16. @{
  17. */
  18. /**
  19. @addtogroup WDT Watch Dog Timer Controller(WDT)
  20. Memory Mapped Structure for WDT Controller
  21. @{ */
  22. typedef struct
  23. {
  24. /**
  25. * @var WDT_T::CTL
  26. * Offset: 0x00 WDT Control Register
  27. * ---------------------------------------------------------------------------------------------------
  28. * |Bits |Field |Descriptions
  29. * | :----: | :----: | :---- |
  30. * |[1] |RSTEN |WDT Time-out Reset Enable Bit (Write Protect)
  31. * | | |Setting this bit will enable the WDT time-out reset function If the WDT up counter value has not been cleared after the specific WDT reset delay period expires.
  32. * | | |0 = WDT time-out reset function Disabled.
  33. * | | |1 = WDT time-out reset function Enabled.
  34. * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register.
  35. * |[2] |RSTF |WDT Time-out Reset Flag
  36. * | | |This bit indicates the system has been reset by WDT time-out reset or not.
  37. * | | |0 = WDT time-out reset did not occur.
  38. * | | |1 = WDT time-out reset occurred.
  39. * | | |Note: This bit is cleared by writing 1 to it.
  40. * |[3] |IF |WDT Time-out Interrupt Flag
  41. * | | |This bit will set to 1 while WDT up counter value reaches the selected WDT time-out interval.
  42. * | | |0 = WDT time-out interrupt did not occur.
  43. * | | |1 = WDT time-out interrupt occurred.
  44. * | | |Note: This bit is cleared by writing 1 to it.
  45. * |[4] |WKEN |WDT Time-out Wake-up Function Control (Write Protect)
  46. * | | |If this bit is set to 1, while WDT time-out interrupt flag IF (WDT_CTL[3]) is generated to 1 and interrupt enable bit INTEN (WDT_CTL[6]) is enabled, the WDT time-out interrupt signal will generate a wake-up trigger event to chip.
  47. * | | |0 = Wake-up trigger event Disabled if WDT time-out interrupt signal generated.
  48. * | | |1 = Wake-up trigger event Enabled if WDT time-out interrupt signal generated.
  49. * | | |Note1: This bit is write protected. Refer to the SYS_REGLCTL register.
  50. * | | |Note2: Chip can be woken up by WDT time-out interrupt signal generated only if WDT clock source is selected to 10 kHz internal low speed RC oscillator (LIRC) or LXT.
  51. * |[5] |WKF |WDT Time-out Wake-up Flag (Write Protect)
  52. * | | |This bit indicates the interrupt wake-up flag status of WDT.
  53. * | | |0 = WDT does not cause chip wake-up.
  54. * | | |1 = Chip wake-up from Idle or Power-down mode if WDT time-out interrupt signal generated.
  55. * | | |Note1: This bit is write protected. Refer to the SYS_REGLCTL register.
  56. * | | |Note2: This bit is cleared by writing 1 to it.
  57. * |[6] |INTEN |WDT Time-out Interrupt Enable Bit (Write Protect)
  58. * | | |If this bit is enabled, the WDT time-out interrupt signal is generated and inform to CPU.
  59. * | | |0 = WDT time-out interrupt Disabled.
  60. * | | |1 = WDT time-out interrupt Enabled.
  61. * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register.
  62. * |[7] |WDTEN |WDT Enable Bit (Write Protect)
  63. * | | |0 = WDT Disabled (This action will reset the internal up counter value).
  64. * | | |1 = WDT Enabled.
  65. * | | |Note1: This bit is write protected. Refer to the SYS_REGLCTL register.
  66. * | | |Note2: If CWDTEN[2:0] (combined by Config0[31] and Config0[4:3]) bits is not configured to 111, this bit is forced as 1 and user cannot change this bit to 0.
  67. * |[11:8] |TOUTSEL |WDT Time-out Interval Selection (Write Protect)
  68. * | | |These four bits select the time-out interval period for the WDT.
  69. * | | |0000 = 24 * WDT_CLK.
  70. * | | |0001 = 26 * WDT_CLK.
  71. * | | |0010 = 28 * WDT_CLK.
  72. * | | |0011 = 210 * WDT_CLK.
  73. * | | |0100 = 212 * WDT_CLK.
  74. * | | |0101 = 214 * WDT_CLK.
  75. * | | |0110 = 216 * WDT_CLK.
  76. * | | |0111 = 218 * WDT_CLK.
  77. * | | |1000 = 220 * WDT_CLK.
  78. * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register.
  79. * |[30] |SYNC |WDT Enable Control SYNC Flag Indicator (Read Only)
  80. * | | |If user executes enable/disable WDTEN (WDT_CTL[7]), this flag can be indicated enable/disable WDTEN function is completed or not.
  81. * | | |0 = Set WDTEN bit is completed.
  82. * | | |1 = Set WDTEN bit is synchronizing and not become active yet.
  83. * | | |Note: Performing enable or disable WDTEN bit needs 2 * WDT_CLK period to become active.
  84. * |[31] |ICEDEBUG |ICE Debug Mode Acknowledge Disable Bit (Write Protect)
  85. * | | |0 = ICE debug mode acknowledgement affects WDT counting.
  86. * | | |WDT up counter will be held while CPU is held by ICE.
  87. * | | |1 = ICE debug mode acknowledgement Disabled.
  88. * | | |WDT up counter will keep going no matter CPU is held by ICE or not.
  89. * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register.
  90. * @var WDT_T::ALTCTL
  91. * Offset: 0x04 WDT Alternative Control Register
  92. * ---------------------------------------------------------------------------------------------------
  93. * |Bits |Field |Descriptions
  94. * | :----: | :----: | :---- |
  95. * |[1:0] |RSTDSEL |WDT Reset Delay Selection (Write Protect).
  96. * | | |When WDT time-out happened, user has a time named WDT Reset Delay Period to clear WDT counter by writing 0x00005aa5 to RSTCNT (WDT_RSTCNT[31:0]) to prevent WDT time-out reset happened.
  97. * | | |User can select a suitable setting of RSTDSEL for different WDT Reset Delay Period.
  98. * | | |00 = WDT Reset Delay Period is 1026 * WDT_CLK.
  99. * | | |01 = WDT Reset Delay Period is 130 * WDT_CLK.
  100. * | | |10 = WDT Reset Delay Period is 18 * WDT_CLK.
  101. * | | |11 = WDT Reset Delay Period is 3 * WDT_CLK.
  102. * | | |Note1: This bit is write protected. Refer to the SYS_REGLCTL register.
  103. * | | |Note2: This register will be reset to 0 if WDT time-out reset happened.
  104. * @var WDT_T::RSTCNT
  105. * Offset: 0x08 WDT Reset Counter Register
  106. * ---------------------------------------------------------------------------------------------------
  107. * |Bits |Field |Descriptions
  108. * | :----: | :----: | :---- |
  109. * |[31:0] |RSTCNT |WDT Reset Counter Register
  110. * | | |Writing 0x00005AA5 to this field will reset the internal 18-bit WDT up counter value to 0.
  111. * | | |Note1: Performing RSTCNT to reset counter needs 2 * WDT_CLK period to become active.
  112. */
  113. __IO uint32_t CTL; /*!< [0x0000] WDT Control Register */
  114. __IO uint32_t ALTCTL; /*!< [0x0004] WDT Alternative Control Register */
  115. __O uint32_t RSTCNT; /*!< [0x0008] WDT Reset Counter Register */
  116. } WDT_T;
  117. /**
  118. @addtogroup WDT_CONST WDT Bit Field Definition
  119. Constant Definitions for WDT Controller
  120. @{ */
  121. #define WDT_CTL_RSTEN_Pos (1) /*!< WDT_T::CTL: RSTEN Position */
  122. #define WDT_CTL_RSTEN_Msk (0x1ul << WDT_CTL_RSTEN_Pos) /*!< WDT_T::CTL: RSTEN Mask */
  123. #define WDT_CTL_RSTF_Pos (2) /*!< WDT_T::CTL: RSTF Position */
  124. #define WDT_CTL_RSTF_Msk (0x1ul << WDT_CTL_RSTF_Pos) /*!< WDT_T::CTL: RSTF Mask */
  125. #define WDT_CTL_IF_Pos (3) /*!< WDT_T::CTL: IF Position */
  126. #define WDT_CTL_IF_Msk (0x1ul << WDT_CTL_IF_Pos) /*!< WDT_T::CTL: IF Mask */
  127. #define WDT_CTL_WKEN_Pos (4) /*!< WDT_T::CTL: WKEN Position */
  128. #define WDT_CTL_WKEN_Msk (0x1ul << WDT_CTL_WKEN_Pos) /*!< WDT_T::CTL: WKEN Mask */
  129. #define WDT_CTL_WKF_Pos (5) /*!< WDT_T::CTL: WKF Position */
  130. #define WDT_CTL_WKF_Msk (0x1ul << WDT_CTL_WKF_Pos) /*!< WDT_T::CTL: WKF Mask */
  131. #define WDT_CTL_INTEN_Pos (6) /*!< WDT_T::CTL: INTEN Position */
  132. #define WDT_CTL_INTEN_Msk (0x1ul << WDT_CTL_INTEN_Pos) /*!< WDT_T::CTL: INTEN Mask */
  133. #define WDT_CTL_WDTEN_Pos (7) /*!< WDT_T::CTL: WDTEN Position */
  134. #define WDT_CTL_WDTEN_Msk (0x1ul << WDT_CTL_WDTEN_Pos) /*!< WDT_T::CTL: WDTEN Mask */
  135. #define WDT_CTL_TOUTSEL_Pos (8) /*!< WDT_T::CTL: TOUTSEL Position */
  136. #define WDT_CTL_TOUTSEL_Msk (0xful << WDT_CTL_TOUTSEL_Pos) /*!< WDT_T::CTL: TOUTSEL Mask */
  137. #define WDT_CTL_SYNC_Pos (30) /*!< WDT_T::CTL: SYNC Position */
  138. #define WDT_CTL_SYNC_Msk (0x1ul << WDT_CTL_SYNC_Pos) /*!< WDT_T::CTL: SYNC Mask */
  139. #define WDT_CTL_ICEDEBUG_Pos (31) /*!< WDT_T::CTL: ICEDEBUG Position */
  140. #define WDT_CTL_ICEDEBUG_Msk (0x1ul << WDT_CTL_ICEDEBUG_Pos) /*!< WDT_T::CTL: ICEDEBUG Mask */
  141. #define WDT_ALTCTL_RSTDSEL_Pos (0) /*!< WDT_T::ALTCTL: RSTDSEL Position */
  142. #define WDT_ALTCTL_RSTDSEL_Msk (0x3ul << WDT_ALTCTL_RSTDSEL_Pos) /*!< WDT_T::ALTCTL: RSTDSEL Mask */
  143. #define WDT_RSTCNT_RSTCNT_Pos (0) /*!< WDT_T::RSTCNT: RSTCNT Position */
  144. #define WDT_RSTCNT_RSTCNT_Msk (0xfffffffful << WDT_RSTCNT_RSTCNT_Pos) /*!< WDT_T::RSTCNT: RSTCNT Mask */
  145. /**@}*/ /* WDT_CONST */
  146. /**@}*/ /* end of WDT register group */
  147. /**@}*/ /* end of REGISTER group */
  148. #if defined ( __CC_ARM )
  149. #pragma no_anon_unions
  150. #endif
  151. #endif /* __WDT_REG_H__ */