1 /**************************** Data Structures ***********************************************/
\r
2 /** \brief Union type to access the Application Program Status Register (APSR).
\r
8 #if (__CORTEX_M != 0x04)
\r
9 uint32_t _reserved0:27; ///< bit: 0..26 Reserved
\r
11 uint32_t _reserved0:16; ///< bit: 0..15 Reserved
\r
12 uint32_t GE:4; ///< bit: 16..19 Greater than or Equal flags
\r
13 uint32_t _reserved1:7; ///< bit: 20..26 Reserved
\r
15 uint32_t Q:1; ///< bit: 27 Saturation condition flag
\r
16 uint32_t V:1; ///< bit: 28 Overflow condition code flag
\r
17 uint32_t C:1; ///< bit: 29 Carry condition code flag
\r
18 uint32_t Z:1; ///< bit: 30 Zero condition code flag
\r
19 uint32_t N:1; ///< bit: 31 Negative condition code flag
\r
20 } b; ///< Structure used for bit access
\r
21 uint32_t w; ///< Type used for word access
\r
25 /**************************************************************************************************/
\r
26 /** \brief Union type to access the Interrupt Program Status Register (IPSR).
\r
32 uint32_t ISR:9; ///< bit: 0.. 8 Exception number
\r
33 uint32_t _reserved0:23; ///< bit: 9..31 Reserved
\r
34 } b; ///< Structure used for bit access
\r
35 uint32_t w; ///< Type used for word access
\r
39 /**************************************************************************************************/
\r
40 /** \brief Union type to access the Special-Purpose Program Status Registers (xPSR).
\r
46 uint32_t ISR:9; ///< bit: 0.. 8 Exception number
\r
47 #if (__CORTEX_M != 0x04)
\r
48 uint32_t _reserved0:15; ///< bit: 9..23 Reserved
\r
50 uint32_t _reserved0:7; ///< bit: 9..15 Reserved
\r
51 uint32_t GE:4; ///< bit: 16..19 Greater than or Equal flags
\r
52 uint32_t _reserved1:4; ///< bit: 20..23 Reserved
\r
54 uint32_t T:1; ///< bit: 24 Thumb bit (read 0)
\r
55 uint32_t IT:2; ///< bit: 25..26 saved IT state (read 0)
\r
56 uint32_t Q:1; ///< bit: 27 Saturation condition flag
\r
57 uint32_t V:1; ///< bit: 28 Overflow condition code flag
\r
58 uint32_t C:1; ///< bit: 29 Carry condition code flag
\r
59 uint32_t Z:1; ///< bit: 30 Zero condition code flag
\r
60 uint32_t N:1; ///< bit: 31 Negative condition code flag
\r
61 } b; ///< Structure used for bit access
\r
62 uint32_t w; ///< Type used for word access
\r
66 /**************************************************************************************************/
\r
67 /** \brief Union type to access the Control Registers (CONTROL).
\r
73 uint32_t nPRIV:1; ///< bit: 0 Execution privilege in Thread mode
\r
74 uint32_t SPSEL:1; ///< bit: 1 Stack to be used
\r
75 uint32_t FPCA:1; ///< bit: 2 FP extension active flag
\r
76 uint32_t _reserved0:29; ///< bit: 3..31 Reserved
\r
77 } b; ///< Structure used for bit access
\r
78 uint32_t w; ///< Type used for word access
\r
82 /**************************************************************************************************/
\r
83 /** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).
\r
87 __IOM uint32_t ISER[8]; ///< Offset: 0x000 (R/W) Interrupt Set Enable Register
\r
88 uint32_t RESERVED0[24]; ///< Reserved
\r
89 __IOM uint32_t ICER[8]; ///< Offset: 0x080 (R/W) Interrupt Clear Enable Register
\r
90 uint32_t RSERVED1[24]; ///< Reserved
\r
91 __IOM uint32_t ISPR[8]; ///< Offset: 0x100 (R/W) Interrupt Set Pending Register
\r
92 uint32_t RESERVED2[24]; ///< Reserved
\r
93 __IOM uint32_t ICPR[8]; ///< Offset: 0x180 (R/W) Interrupt Clear Pending Register
\r
94 uint32_t RESERVED3[24]; ///< Reserved
\r
95 __IOM uint32_t IABR[8]; ///< Offset: 0x200 (R/W) Interrupt Active bit Register
\r
96 uint32_t RESERVED4[56]; ///< Reserved
\r
97 __IOM uint8_t IP[240]; ///< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide)
\r
98 uint32_t RESERVED5[644]; ///< Reserved
\r
99 __OM uint32_t STIR; ///< Offset: 0xE00 ( /W) Software Trigger Interrupt Register
\r
103 /**************************************************************************************************/
\r
104 /** \brief Structure type to access the System Control Block (SCB).
\r
108 __IM uint32_t CPUID; ///< Offset: 0x000 (R/ ) CPUID Base Register
\r
109 __IOM uint32_t ICSR; ///< Offset: 0x004 (R/W) Interrupt Control and State Register
\r
110 __IOM uint32_t VTOR; ///< Offset: 0x008 (R/W) Vector Table Offset Register
\r
111 __IOM uint32_t AIRCR; ///< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register
\r
112 __IOM uint32_t SCR; ///< Offset: 0x010 (R/W) System Control Register
\r
113 __IOM uint32_t CCR; ///< Offset: 0x014 (R/W) Configuration Control Register
\r
114 __IOM uint8_t SHP[12]; ///< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15)
\r
115 __IOM uint32_t SHCSR; ///< Offset: 0x024 (R/W) System Handler Control and State Register
\r
116 __IOM uint32_t CFSR; ///< Offset: 0x028 (R/W) Configurable Fault Status Register
\r
117 __IOM uint32_t HFSR; ///< Offset: 0x02C (R/W) HardFault Status Register
\r
118 __IOM uint32_t DFSR; ///< Offset: 0x030 (R/W) Debug Fault Status Register
\r
119 __IOM uint32_t MMFAR; ///< Offset: 0x034 (R/W) MemManage Fault Address Register
\r
120 __IOM uint32_t BFAR; ///< Offset: 0x038 (R/W) BusFault Address Register
\r
121 __IOM uint32_t AFSR; ///< Offset: 0x03C (R/W) Auxiliary Fault Status Register
\r
122 __IM uint32_t PFR[2]; ///< Offset: 0x040 (R/ ) Processor Feature Register
\r
123 __IM uint32_t DFR; ///< Offset: 0x048 (R/ ) Debug Feature Register
\r
124 __IM uint32_t ADR; ///< Offset: 0x04C (R/ ) Auxiliary Feature Register
\r
125 __IM uint32_t MMFR[4]; ///< Offset: 0x050 (R/ ) Memory Model Feature Register
\r
126 __IM uint32_t ISAR[5]; ///< Offset: 0x060 (R/ ) Instruction Set Attributes Register
\r
127 uint32_t RESERVED0[5]; ///< Reserved
\r
128 __IOM uint32_t CPACR; ///< Offset: 0x088 (R/W) Coprocessor Access Control Register
\r
132 /**************************************************************************************************/
\r
133 /** \brief Structure type to access the System Control and ID Register not in the SCB.
\r
137 uint32_t RESERVED0[1]; ///< Reserved
\r
138 __IM uint32_t ICTR; ///< Offset: 0x004 (R/ ) Interrupt Controller Type Register
\r
139 __IOM uint32_t ACTLR; ///< Offset: 0x008 (R/W) Auxiliary Control Register
\r
143 /**************************************************************************************************/
\r
144 /** \brief Structure type to access the System Timer (SysTick).
\r
148 __IOM uint32_t CTRL; ///< Offset: 0x000 (R/W) SysTick Control and Status Register
\r
149 __IOM uint32_t LOAD; ///< Offset: 0x004 (R/W) SysTick Reload Value Register
\r
150 __IOM uint32_t VAL; ///< Offset: 0x008 (R/W) SysTick Current Value Register
\r
151 __IM uint32_t CALIB; ///< Offset: 0x00C (R/ ) SysTick Calibration Register
\r
155 /**************************************************************************************************/
\r
156 /** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM).
\r
162 __OM uint8_t u8; ///< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit
\r
163 __OM uint16_t u16; ///< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit
\r
164 __OM uint32_t u32; ///< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit
\r
165 } PORT [32]; ///< Offset: 0x000 ( /W) ITM Stimulus Port Registers
\r
166 uint32_t RESERVED0[864]; ///< Reserved
\r
167 __IOM uint32_t TER; ///< Offset: 0xE00 (R/W) ITM Trace Enable Register
\r
168 uint32_t RESERVED1[15]; ///< Reserved
\r
169 __IOM uint32_t TPR; ///< Offset: 0xE40 (R/W) ITM Trace Privilege Register
\r
170 uint32_t RESERVED2[15]; ///< Reserved
\r
171 __IOM uint32_t TCR; ///< Offset: 0xE80 (R/W) ITM Trace Control Register
\r
175 /**************************************************************************************************/
\r
176 /** \brief Structure type to access the Memory Protection Unit (MPU).
\r
180 __IM uint32_t TYPE; ///< Offset: 0x000 (R/ ) MPU Type Register
\r
181 __IOM uint32_t CTRL; ///< Offset: 0x004 (R/W) MPU Control Register
\r
182 __IOM uint32_t RNR; ///< Offset: 0x008 (R/W) MPU Region RNRber Register
\r
183 __IOM uint32_t RBAR; ///< Offset: 0x00C (R/W) MPU Region Base Address Register
\r
184 __IOM uint32_t RASR; ///< Offset: 0x010 (R/W) MPU Region Attribute and Size Register
\r
185 __IOM uint32_t RBAR_A1; ///< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register
\r
186 __IOM uint32_t RASR_A1; ///< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register
\r
187 __IOM uint32_t RBAR_A2; ///< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register
\r
188 __IOM uint32_t RASR_A2; ///< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register
\r
189 __IOM uint32_t RBAR_A3; ///< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register
\r
190 __IOM uint32_t RASR_A3; ///< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register
\r
194 /**************************************************************************************************/
\r
195 /** \brief Structure type to access the Floating Point Unit (FPU).
\r
199 uint32_t RESERVED0[1]; ///< Reserved
\r
200 __IOM uint32_t FPCCR; ///< Offset: 0x004 (R/W) Floating-Point Context Control Register
\r
201 __IOM uint32_t FPCAR; ///< Offset: 0x008 (R/W) Floating-Point Context Address Register
\r
202 __IOM uint32_t FPDSCR; ///< Offset: 0x00C (R/W) Floating-Point Default Status Control Register
\r
203 __IM uint32_t MVFR0; ///< Offset: 0x010 (R/ ) Media and FP Feature Register 0
\r
204 __IM uint32_t MVFR1; ///< Offset: 0x014 (R/ ) Media and FP Feature Register 1
\r
208 /**************************************************************************************************/
\r
209 /** \brief Structure type to access the Core Debug Register (CoreDebug).
\r
213 __IOM uint32_t DHCSR; ///< Offset: 0x000 (R/W) Debug Halting Control and Status Register
\r
214 __OM uint32_t DCRSR; ///< Offset: 0x004 ( /W) Debug Core Register Selector Register
\r
215 __IOM uint32_t DCRDR; ///< Offset: 0x008 (R/W) Debug Core Register Data Register
\r
216 __IOM uint32_t DEMCR; ///< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register
\r
220 /**************************************************************************************************/
\r
221 /** \brief Structure type to access the Data Watchpoint and Trace Register (DWT).
\r
225 __IOM uint32_t CTRL; ///< Offset: 0x000 (R/W) Control Register
\r
226 __IOM uint32_t CYCCNT; ///< Offset: 0x004 (R/W) Cycle Count Register
\r
227 __IOM uint32_t CPICNT; ///< Offset: 0x008 (R/W) CPI Count Register
\r
228 __IOM uint32_t EXCCNT; ///< Offset: 0x00C (R/W) Exception Overhead Count Register
\r
229 __IOM uint32_t SLEEPCNT; ///< Offset: 0x010 (R/W) Sleep Count Register
\r
230 __IOM uint32_t LSUCNT; ///< Offset: 0x014 (R/W) LSU Count Register
\r
231 __IOM uint32_t FOLDCNT; ///< Offset: 0x018 (R/W) Folded-instruction Count Register
\r
232 __IM uint32_t PCSR; ///< Offset: 0x01C (R/ ) Program Counter Sample Register
\r
233 __IOM uint32_t COMP0; ///< Offset: 0x020 (R/W) Comparator Register 0
\r
234 __IOM uint32_t MASK0; ///< Offset: 0x024 (R/W) Mask Register 0
\r
235 __IOM uint32_t FUNCTION0; ///< Offset: 0x028 (R/W) Function Register 0
\r
236 uint32_t RESERVED0[1]; ///< Reserved
\r
237 __IOM uint32_t COMP1; ///< Offset: 0x030 (R/W) Comparator Register 1
\r
238 __IOM uint32_t MASK1; ///< Offset: 0x034 (R/W) Mask Register 1
\r
239 __IOM uint32_t FUNCTION1; ///< Offset: 0x038 (R/W) Function Register 1
\r
240 uint32_t RESERVED1[1]; ///< Reserved
\r
241 __IOM uint32_t COMP2; ///< Offset: 0x040 (R/W) Comparator Register 2
\r
242 __IOM uint32_t MASK2; ///< Offset: 0x044 (R/W) Mask Register 2
\r
243 __IOM uint32_t FUNCTION2; ///< Offset: 0x048 (R/W) Function Register 2
\r
244 uint32_t RESERVED2[1]; ///< Reserved
\r
245 __IOM uint32_t COMP3; ///< Offset: 0x050 (R/W) Comparator Register 3
\r
246 __IOM uint32_t MASK3; ///< Offset: 0x054 (R/W) Mask Register 3
\r
247 __IOM uint32_t FUNCTION3; ///< Offset: 0x058 (R/W) Function Register 3
\r
251 /**************************************************************************************************/
\r
252 /** \brief Structure type to access the Trace Port Interface Register (TPI).
\r
256 __IOM uint32_t SSPSR; ///< Offset: 0x000 (R/ ) Supported Parallel Port Size Register
\r
257 __IOM uint32_t CSPSR; ///< Offset: 0x004 (R/W) Current Parallel Port Size Register
\r
258 uint32_t RESERVED0[2]; ///< Reserved
\r
259 __IOM uint32_t ACPR; ///< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register
\r
260 uint32_t RESERVED1[55]; ///< Reserved
\r
261 __IOM uint32_t SPPR; ///< Offset: 0x0F0 (R/W) Selected Pin Protocol Register
\r
262 uint32_t RESERVED2[131]; ///< Reserved
\r
263 __IM uint32_t FFSR; ///< Offset: 0x300 (R/ ) Formatter and Flush Status Register
\r
264 __IOM uint32_t FFCR; ///< Offset: 0x304 (R/W) Formatter and Flush Control Register
\r
265 __IM uint32_t FSCR; ///< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register
\r
266 uint32_t RESERVED3[759]; ///< Reserved
\r
267 __IM uint32_t TRIGGER; ///< Offset: 0xEE8 (R/ ) TRIGGER
\r
268 __IM uint32_t FIFO0; ///< Offset: 0xEEC (R/ ) Integration ETM Data
\r
269 __IM uint32_t ITATBCTR2; ///< Offset: 0xEF0 (R/ ) ITATBCTR2
\r
270 uint32_t RESERVED4[1]; ///< Reserved
\r
271 __IM uint32_t ITATBCTR0; ///< Offset: 0xEF8 (R/ ) ITATBCTR0
\r
272 __IM uint32_t FIFO1; ///< Offset: 0xEFC (R/ ) Integration ITM Data
\r
273 __IOM uint32_t ITCTRL; ///< Offset: 0xF00 (R/W) Integration Mode Control
\r
274 uint32_t RESERVED5[39]; ///< Reserved
\r
275 __IOM uint32_t CLAIMSET; ///< Offset: 0xFA0 (R/W) Claim tag set
\r
276 __IOM uint32_t CLAIMCLR; ///< Offset: 0xFA4 (R/W) Claim tag clear
\r
277 uint32_t RESERVED7[8]; ///< Reserved
\r
278 __IM uint32_t DEVID; ///< Offset: 0xFC8 (R/ ) TPIU_DEVID
\r
279 __IM uint32_t DEVTYPE; ///< Offset: 0xFCC (R/ ) TPIU_DEVTYPE
\r