1 /**************************************************************************//**
2  * @file     wwdt_reg.h
3  * @version  V1.00
4  * @brief    WWDT register definition header file
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  * @copyright (C) 2017-2020 Nuvoton Technology Corp. All rights reserved.
8  *****************************************************************************/
9 #ifndef __WWDT_REG_H__
10 #define __WWDT_REG_H__
11 
12 #if defined ( __CC_ARM   )
13 #pragma anon_unions
14 #endif
15 
16 /**
17    @addtogroup REGISTER Control Register
18    @{
19 */
20 
21 /**
22     @addtogroup WWDT Window Watchdog Timer(WWDT)
23     Memory Mapped Structure for WWDT Controller
24 @{ */
25 
26 typedef struct
27 {
28 
29 
30     /**
31      * @var WWDT_T::RLDCNT
32      * Offset: 0x00  WWDT Reload Counter Register
33      * ---------------------------------------------------------------------------------------------------
34      * |Bits    |Field     |Descriptions
35      * | :----: | :----:   | :---- |
36      * |[31:0]  |RLDCNT    |WWDT Reload Counter Register
37      * |        |          |Writing 0x00005AA5 to this register will reload the WWDT counter value to 0x3F.
38      * |        |          |Note: User can only write WWDT_RLDCNT register to reload WWDT counter value when current WWDT counter value between 0 and CMPDAT (WWDT_CTL[21:16])
39      * |        |          |If user writes WWDT_RLDCNT when current WWDT counter value is larger than CMPDAT , WWDT reset signal will generate immediately.
40      * @var WWDT_T::CTL
41      * Offset: 0x04  WWDT Control Register
42      * ---------------------------------------------------------------------------------------------------
43      * |Bits    |Field     |Descriptions
44      * | :----: | :----:   | :---- |
45      * |[0]     |WWDTEN    |WWDT Enable Control Bit
46      * |        |          |Set this bit to enable WWDT counter counting.
47      * |        |          |0 = WWDT counter is stopped.
48      * |        |          |1 = WWDT counter is starting counting.
49      * |[1]     |INTEN     |WWDT Interrupt Enable Control Bit
50      * |        |          |If this bit is enabled, the WWDT counter compare match interrupt signal is generated and inform to CPU.
51      * |        |          |0 = WWDT counter compare match interrupt Disabled.
52      * |        |          |1 = WWDT counter compare match interrupt Enabled.
53      * |[11:8]  |PSCSEL    |WWDT Counter Prescale Period Selection
54      * |        |          |0000 = Pre-scale is 1; Max time-out period is 1 * 64 * WWDT_CLK.
55      * |        |          |0001 = Pre-scale is 2; Max time-out period is 2 * 64 * WWDT_CLK.
56      * |        |          |0010 = Pre-scale is 4; Max time-out period is 4 * 64 * WWDT_CLK.
57      * |        |          |0011 = Pre-scale is 8; Max time-out period is 8 * 64 * WWDT_CLK.
58      * |        |          |0100 = Pre-scale is 16; Max time-out period is 16 * 64 * WWDT_CLK.
59      * |        |          |0101 = Pre-scale is 32; Max time-out period is 32 * 64 * WWDT_CLK.
60      * |        |          |0110 = Pre-scale is 64; Max time-out period is 64 * 64 * WWDT_CLK.
61      * |        |          |0111 = Pre-scale is 128; Max time-out period is 128 * 64 * WWDT_CLK.
62      * |        |          |1000 = Pre-scale is 192; Max time-out period is 192 * 64 * WWDT_CLK.
63      * |        |          |1001 = Pre-scale is 256; Max time-out period is 256 * 64 * WWDT_CLK.
64      * |        |          |1010 = Pre-scale is 384; Max time-out period is 384 * 64 * WWDT_CLK.
65      * |        |          |1011 = Pre-scale is 512; Max time-out period is 512 * 64 * WWDT_CLK.
66      * |        |          |1100 = Pre-scale is 768; Max time-out period is 768 * 64 * WWDT_CLK.
67      * |        |          |1101 = Pre-scale is 1024; Max time-out period is 1024 * 64 * WWDT_CLK.
68      * |        |          |1110 = Pre-scale is 1536; Max time-out period is 1536 * 64 * WWDT_CLK.
69      * |        |          |1111 = Pre-scale is 2048; Max time-out period is 2048 * 64 * WWDT_CLK.
70      * |[21:16] |CMPDAT    |WWDT Window Compare Register
71      * |        |          |Set this register to adjust the valid reload window.
72      * |        |          |Note: User can only write WWDT_RLDCNT register to reload WWDT counter value when current WWDT counter value between 0 and CMPDAT
73      * |        |          |If user writes WWDT_RLDCNT register when current WWDT counter value larger than CMPDAT, WWDT reset signal will generate immediately.
74      * |[31]    |ICEDEBUG  |ICE Debug Mode Acknowledge Disable Control
75      * |        |          |0 = ICE debug mode acknowledgement effects WWDT counting.
76      * |        |          |WWDT down counter will be held while CPU is held by ICE.
77      * |        |          |1 = ICE debug mode acknowledgement Disabled.
78      * |        |          |WWDT down counter will keep going no matter CPU is held by ICE or not.
79      * @var WWDT_T::STATUS
80      * Offset: 0x08  WWDT Status Register
81      * ---------------------------------------------------------------------------------------------------
82      * |Bits    |Field     |Descriptions
83      * | :----: | :----:   | :---- |
84      * |[0]     |WWDTIF    |WWDT Compare Match Interrupt Flag
85      * |        |          |This bit indicates the interrupt flag status of WWDT while WWDT counter value matches CMPDAT (WWDT_CTL[21:16]).
86      * |        |          |0 = No effect.
87      * |        |          |1 = WWDT counter value matches CMPDAT.
88      * |        |          |Note: This bit is cleared by writing 1 to it.
89      * |[1]     |WWDTRF    |WWDT Timer-out Reset Flag
90      * |        |          |This bit indicates the system has been reset by WWDT time-out reset or not.
91      * |        |          |0 = WWDT time-out reset did not occur.
92      * |        |          |1 = WWDT time-out reset occurred.
93      * |        |          |Note: This bit is cleared by writing 1 to it.
94      * @var WWDT_T::CNT
95      * Offset: 0x0C  WWDT Counter Value Register
96      * ---------------------------------------------------------------------------------------------------
97      * |Bits    |Field     |Descriptions
98      * | :----: | :----:   | :---- |
99      * |[5:0]   |CNTDAT    |WWDT Counter Value
100      * |        |          |CNTDAT will be updated continuously to monitor 6-bit WWDT down counter value.
101      */
102     __O  uint32_t RLDCNT;                /*!< [0x0000] WWDT Reload Counter Register                                     */
103     __IO uint32_t CTL;                   /*!< [0x0004] WWDT Control Register                                            */
104     __IO uint32_t STATUS;                /*!< [0x0008] WWDT Status Register                                             */
105     __I  uint32_t CNT;                   /*!< [0x000c] WWDT Counter Value Register                                      */
106 
107 } WWDT_T;
108 
109 /**
110     @addtogroup WWDT_CONST WWDT Bit Field Definition
111     Constant Definitions for WWDT Controller
112 @{ */
113 
114 #define WWDT_RLDCNT_RLDCNT_Pos           (0)                                               /*!< WWDT_T::RLDCNT: RLDCNT Position        */
115 #define WWDT_RLDCNT_RLDCNT_Msk           (0xfffffffful << WWDT_RLDCNT_RLDCNT_Pos)          /*!< WWDT_T::RLDCNT: RLDCNT Mask            */
116 
117 #define WWDT_CTL_WWDTEN_Pos              (0)                                               /*!< WWDT_T::CTL: WWDTEN Position           */
118 #define WWDT_CTL_WWDTEN_Msk              (0x1ul << WWDT_CTL_WWDTEN_Pos)                    /*!< WWDT_T::CTL: WWDTEN Mask               */
119 
120 #define WWDT_CTL_INTEN_Pos               (1)                                               /*!< WWDT_T::CTL: INTEN Position            */
121 #define WWDT_CTL_INTEN_Msk               (0x1ul << WWDT_CTL_INTEN_Pos)                     /*!< WWDT_T::CTL: INTEN Mask                */
122 
123 #define WWDT_CTL_PSCSEL_Pos              (8)                                               /*!< WWDT_T::CTL: PSCSEL Position           */
124 #define WWDT_CTL_PSCSEL_Msk              (0xful << WWDT_CTL_PSCSEL_Pos)                    /*!< WWDT_T::CTL: PSCSEL Mask               */
125 
126 #define WWDT_CTL_CMPDAT_Pos              (16)                                              /*!< WWDT_T::CTL: CMPDAT Position           */
127 #define WWDT_CTL_CMPDAT_Msk              (0x3ful << WWDT_CTL_CMPDAT_Pos)                   /*!< WWDT_T::CTL: CMPDAT Mask               */
128 
129 #define WWDT_CTL_ICEDEBUG_Pos            (31)                                              /*!< WWDT_T::CTL: ICEDEBUG Position         */
130 #define WWDT_CTL_ICEDEBUG_Msk            (0x1ul << WWDT_CTL_ICEDEBUG_Pos)                  /*!< WWDT_T::CTL: ICEDEBUG Mask             */
131 
132 #define WWDT_STATUS_WWDTIF_Pos           (0)                                               /*!< WWDT_T::STATUS: WWDTIF Position        */
133 #define WWDT_STATUS_WWDTIF_Msk           (0x1ul << WWDT_STATUS_WWDTIF_Pos)                 /*!< WWDT_T::STATUS: WWDTIF Mask            */
134 
135 #define WWDT_STATUS_WWDTRF_Pos           (1)                                               /*!< WWDT_T::STATUS: WWDTRF Position        */
136 #define WWDT_STATUS_WWDTRF_Msk           (0x1ul << WWDT_STATUS_WWDTRF_Pos)                 /*!< WWDT_T::STATUS: WWDTRF Mask            */
137 
138 #define WWDT_CNT_CNTDAT_Pos              (0)                                               /*!< WWDT_T::CNT: CNTDAT Position           */
139 #define WWDT_CNT_CNTDAT_Msk              (0x3ful << WWDT_CNT_CNTDAT_Pos)                   /*!< WWDT_T::CNT: CNTDAT Mask               */
140 
141 /**@}*/ /* WWDT_CONST */
142 /**@}*/ /* end of WWDT register group */
143 /**@}*/ /* end of REGISTER group */
144 
145 #if defined ( __CC_ARM   )
146 #pragma no_anon_unions
147 #endif
148 
149 #endif /* __WWDT_REG_H__ */
150