]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Core/src/Ref_DataStructs.txt
Doxygen: Extended with Cortex-M85 references
[cmsis] / CMSIS / DoxyGen / Core / src / Ref_DataStructs.txt
1 /****************************    Data Structures    ***********************************************/
2 /** \brief  Union type to access the Application Program Status Register (APSR).
3  */
4 typedef union
5 {
6   struct
7   {
8 #if (__CORTEX_M != 0x04)
9     uint32_t _reserved0:27;              ///< bit:  0..26  Reserved
10 #else
11     uint32_t _reserved0:16;              ///< bit:  0..15  Reserved
12     uint32_t GE:4;                       ///< bit: 16..19  Greater than or Equal flags
13     uint32_t _reserved1:7;               ///< bit: 20..26  Reserved
14 #endif
15     uint32_t Q:1;                        ///< bit:     27  Saturation condition flag
16     uint32_t V:1;                        ///< bit:     28  Overflow condition code flag
17     uint32_t C:1;                        ///< bit:     29  Carry condition code flag
18     uint32_t Z:1;                        ///< bit:     30  Zero condition code flag
19     uint32_t N:1;                        ///< bit:     31  Negative condition code flag
20   } b;                                   ///< Structure used for bit  access
21   uint32_t w;                            ///< Type      used for word access
22 } APSR_Type;
23
24
25 /**************************************************************************************************/
26 /** \brief  Union type to access the Interrupt Program Status Register (IPSR).
27  */
28 typedef union
29 {
30   struct
31   {
32     uint32_t ISR:9;                      ///< bit:  0.. 8  Exception number
33     uint32_t _reserved0:23;              ///< bit:  9..31  Reserved
34   } b;                                   ///< Structure used for bit  access
35   uint32_t w;                            ///< Type      used for word access
36 } IPSR_Type;
37
38
39 /**************************************************************************************************/
40 /** \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
41  */
42 typedef union
43 {
44   struct
45   {
46     uint32_t ISR:9;                      ///< bit:  0.. 8  Exception number
47 #if (__CORTEX_M != 0x04)
48     uint32_t _reserved0:15;              ///< bit:  9..23  Reserved
49 #else
50     uint32_t _reserved0:7;               ///< bit:  9..15  Reserved
51     uint32_t GE:4;                       ///< bit: 16..19  Greater than or Equal flags
52     uint32_t _reserved1:4;               ///< bit: 20..23  Reserved
53 #endif
54     uint32_t T:1;                        ///< bit:     24  Thumb bit        (read 0)
55     uint32_t IT:2;                       ///< bit: 25..26  saved IT state   (read 0)
56     uint32_t Q:1;                        ///< bit:     27  Saturation condition flag
57     uint32_t V:1;                        ///< bit:     28  Overflow condition code flag
58     uint32_t C:1;                        ///< bit:     29  Carry condition code flag
59     uint32_t Z:1;                        ///< bit:     30  Zero condition code flag
60     uint32_t N:1;                        ///< bit:     31  Negative condition code flag
61   } b;                                   ///< Structure used for bit  access
62   uint32_t w;                            ///< Type      used for word access
63 } xPSR_Type;
64
65
66 /**************************************************************************************************/
67 /** \brief  Union type to access the Control Registers (CONTROL).
68  */
69 typedef union
70 {
71   struct
72   {
73     uint32_t nPRIV:1;                    ///< bit:      0  Execution privilege in Thread mode
74     uint32_t SPSEL:1;                    ///< bit:      1  Stack to be used
75     uint32_t FPCA:1;                     ///< bit:      2  FP extension active flag
76     uint32_t _reserved0:29;              ///< bit:  3..31  Reserved
77   } b;                                   ///< Structure used for bit  access
78   uint32_t w;                            ///< Type      used for word access
79 } CONTROL_Type;
80
81
82 /**************************************************************************************************/
83 /** \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
84  */
85 typedef struct
86 {
87   __IOM uint32_t ISER[8];                ///< Offset: 0x000 (R/W)  Interrupt Set Enable Register
88         uint32_t RESERVED0[24];          ///< Reserved
89   __IOM uint32_t ICER[8];                ///< Offset: 0x080 (R/W)  Interrupt Clear Enable Register
90         uint32_t RSERVED1[24];           ///< Reserved
91   __IOM uint32_t ISPR[8];                ///< Offset: 0x100 (R/W)  Interrupt Set Pending Register
92         uint32_t RESERVED2[24];          ///< Reserved
93   __IOM uint32_t ICPR[8];                ///< Offset: 0x180 (R/W)  Interrupt Clear Pending Register
94         uint32_t RESERVED3[24];          ///< Reserved
95   __IOM uint32_t IABR[8];                ///< Offset: 0x200 (R/W)  Interrupt Active bit Register
96         uint32_t RESERVED4[56];          ///< Reserved
97   __IOM uint8_t  IP[240];                ///< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide)
98         uint32_t RESERVED5[644];         ///< Reserved
99   __OM  uint32_t STIR;                   ///< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register
100 }  NVIC_Type;
101
102
103 /**************************************************************************************************/
104 /** \brief  Structure type to access the System Control Block (SCB).
105  */
106 typedef struct
107 {
108   __IM  uint32_t CPUID;                  ///< Offset: 0x000 (R/ )  CPUID Base Register
109   __IOM uint32_t ICSR;                   ///< Offset: 0x004 (R/W)  Interrupt Control and State Register
110   __IOM uint32_t VTOR;                   ///< Offset: 0x008 (R/W)  Vector Table Offset Register
111   __IOM uint32_t AIRCR;                  ///< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register
112   __IOM uint32_t SCR;                    ///< Offset: 0x010 (R/W)  System Control Register
113   __IOM uint32_t CCR;                    ///< Offset: 0x014 (R/W)  Configuration Control Register
114   __IOM uint8_t  SHP[12];                ///< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15)
115   __IOM uint32_t SHCSR;                  ///< Offset: 0x024 (R/W)  System Handler Control and State Register
116   __IOM uint32_t CFSR;                   ///< Offset: 0x028 (R/W)  Configurable Fault Status Register
117   __IOM uint32_t HFSR;                   ///< Offset: 0x02C (R/W)  HardFault Status Register
118   __IOM uint32_t DFSR;                   ///< Offset: 0x030 (R/W)  Debug Fault Status Register
119   __IOM uint32_t MMFAR;                  ///< Offset: 0x034 (R/W)  MemManage Fault Address Register
120   __IOM uint32_t BFAR;                   ///< Offset: 0x038 (R/W)  BusFault Address Register
121   __IOM uint32_t AFSR;                   ///< Offset: 0x03C (R/W)  Auxiliary Fault Status Register
122   __IM  uint32_t PFR[2];                 ///< Offset: 0x040 (R/ )  Processor Feature Register
123   __IM  uint32_t DFR;                    ///< Offset: 0x048 (R/ )  Debug Feature Register
124   __IM  uint32_t ADR;                    ///< Offset: 0x04C (R/ )  Auxiliary Feature Register
125   __IM  uint32_t MMFR[4];                ///< Offset: 0x050 (R/ )  Memory Model Feature Register
126   __IM  uint32_t ISAR[5];                ///< Offset: 0x060 (R/ )  Instruction Set Attributes Register
127         uint32_t RESERVED0[5];           ///< Reserved
128   __IOM uint32_t CPACR;                  ///< Offset: 0x088 (R/W)  Coprocessor Access Control Register
129 } SCB_Type;
130
131
132 /**************************************************************************************************/
133 /** \brief  Structure type to access the System Control and ID Register not in the SCB.
134  */
135 typedef struct
136 {
137         uint32_t RESERVED0[1];           /*!< Reserved */
138   __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register
139                                             \note available for Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M33, Cortex-M33P, SecureCore SC300 */
140   __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register
141                                             \note available for Cortex-M1, Cortex-M3 , Cortex-M4, Cortex-M7, Cortex-M33, Cortex-M33P, SecureCore SC000, SecureCore SC300 */
142   __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control Register
143                                             \note available for Cortex-M33, Cortex-M33P */
144 } SCnSCB_Type;
145
146
147 /**************************************************************************************************/
148 /** \brief  Structure type to access the Implementation Control Block Register (ICB).
149     \note replaces SCnSCB_Type (only on Cortex-M55/M85)
150  */
151 typedef struct
152 {
153         uint32_t RESERVED0[1U];
154   __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
155   __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
156   __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */
157 } ICB_Type;
158
159
160 /**************************************************************************************************/
161 /** \brief  Structure type to access the System Timer (SysTick).
162  */
163 typedef struct
164 {
165   __IOM uint32_t CTRL;                   ///< Offset: 0x000 (R/W)  SysTick Control and Status Register
166   __IOM uint32_t LOAD;                   ///< Offset: 0x004 (R/W)  SysTick Reload Value Register
167   __IOM uint32_t VAL;                    ///< Offset: 0x008 (R/W)  SysTick Current Value Register
168   __IM  uint32_t CALIB;                  ///< Offset: 0x00C (R/ )  SysTick Calibration Register
169 } SysTick_Type;
170
171
172 /**************************************************************************************************/
173 /** \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).
174  */
175 typedef struct
176 {
177   __OM  union
178   {
179     __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
180     __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */
181     __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */
182   }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
183 //      uint32_t RESERVED0[864U];
184   __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */
185 //      uint32_t RESERVED1[15U];
186   __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */
187 //      uint32_t RESERVED2[15U];
188   __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */
189 //      uint32_t RESERVED3[29U];
190   __OM  uint32_t IWR;                    /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register */
191   __IM  uint32_t IRR;                    /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register */
192   __IOM uint32_t IMCR;                   /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register */
193 //      uint32_t RESERVED4[43U];
194   __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */
195   __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */
196 //      uint32_t RESERVED5[1U];
197   __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register (Cortex-M33 only) */
198 //      uint32_t RESERVED6[4U];
199   __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */
200   __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */
201   __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */
202   __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */
203   __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */
204   __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */
205   __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */
206   __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */
207   __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */
208   __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
209   __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
210   __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
211 } ITM_Type;
212
213
214 /**************************************************************************************************/
215 /** \brief  Structure type to access the Memory Protection Unit (MPU).
216  */
217 typedef struct
218 {
219   __IM  uint32_t TYPE;                   ///< Offset: 0x000 (R/ )  MPU Type Register
220   __IOM uint32_t CTRL;                   ///< Offset: 0x004 (R/W)  MPU Control Register
221   __IOM uint32_t RNR;                    ///< Offset: 0x008 (R/W)  MPU Region RNRber Register
222   __IOM uint32_t RBAR;                   ///< Offset: 0x00C (R/W)  MPU Region Base Address Register
223   __IOM uint32_t RASR;                   ///< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register
224   __IOM uint32_t RBAR_A1;                ///< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register
225   __IOM uint32_t RASR_A1;                ///< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register
226   __IOM uint32_t RBAR_A2;                ///< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register
227   __IOM uint32_t RASR_A2;                ///< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register
228   __IOM uint32_t RBAR_A3;                ///< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register
229   __IOM uint32_t RASR_A3;                ///< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register
230 } MPU_Type;
231
232
233 /**************************************************************************************************/
234 /** \brief  Structure type to access the Floating Point Unit (FPU).
235  */
236 typedef struct
237 {
238         uint32_t RESERVED0[1];           ///< Reserved
239   __IOM uint32_t FPCCR;                  ///< Offset: 0x004 (R/W)  Floating-Point Context Control Register
240   __IOM uint32_t FPCAR;                  ///< Offset: 0x008 (R/W)  Floating-Point Context Address Register
241   __IOM uint32_t FPDSCR;                 ///< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register
242   __IM  uint32_t MVFR0;                  ///< Offset: 0x010 (R/ )  Media and FP Feature Register 0
243   __IM  uint32_t MVFR1;                  ///< Offset: 0x014 (R/ )  Media and FP Feature Register 1
244 } FPU_Type;
245
246
247 /**************************************************************************************************/
248 /** \brief  Structure type to access the Core Debug Register (CoreDebug).
249  */
250 typedef struct
251 {
252   __IOM uint32_t DHCSR;                  ///< Offset: 0x000 (R/W)  Debug Halting Control and Status Register
253   __OM  uint32_t DCRSR;                  ///< Offset: 0x004 ( /W)  Debug Core Register Selector Register
254   __IOM uint32_t DCRDR;                  ///< Offset: 0x008 (R/W)  Debug Core Register Data Register
255   __IOM uint32_t DEMCR;                  ///< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register
256 } CoreDebug_Type;
257
258
259 /**************************************************************************************************/
260 /** \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).
261  */
262 typedef struct
263 {
264   __IOM uint32_t CTRL;                   ///< Offset: 0x000 (R/W)  Control Register
265   __IOM uint32_t CYCCNT;                 ///< Offset: 0x004 (R/W)  Cycle Count Register
266   __IOM uint32_t CPICNT;                 ///< Offset: 0x008 (R/W)  CPI Count Register
267   __IOM uint32_t EXCCNT;                 ///< Offset: 0x00C (R/W)  Exception Overhead Count Register
268   __IOM uint32_t SLEEPCNT;               ///< Offset: 0x010 (R/W)  Sleep Count Register
269   __IOM uint32_t LSUCNT;                 ///< Offset: 0x014 (R/W)  LSU Count Register
270   __IOM uint32_t FOLDCNT;                ///< Offset: 0x018 (R/W)  Folded-instruction Count Register
271   __IM  uint32_t PCSR;                   ///< Offset: 0x01C (R/ )  Program Counter Sample Register
272   __IOM uint32_t COMP0;                  ///< Offset: 0x020 (R/W)  Comparator Register 0
273   __IOM uint32_t MASK0;                  ///< Offset: 0x024 (R/W)  Mask Register 0
274   __IOM uint32_t FUNCTION0;              ///< Offset: 0x028 (R/W)  Function Register 0
275         uint32_t RESERVED0[1];           ///< Reserved
276   __IOM uint32_t COMP1;                  ///< Offset: 0x030 (R/W)  Comparator Register 1
277   __IOM uint32_t MASK1;                  ///< Offset: 0x034 (R/W)  Mask Register 1
278   __IOM uint32_t FUNCTION1;              ///< Offset: 0x038 (R/W)  Function Register 1
279         uint32_t RESERVED1[1];           ///< Reserved
280   __IOM uint32_t COMP2;                  ///< Offset: 0x040 (R/W)  Comparator Register 2
281   __IOM uint32_t MASK2;                  ///< Offset: 0x044 (R/W)  Mask Register 2
282   __IOM uint32_t FUNCTION2;              ///< Offset: 0x048 (R/W)  Function Register 2
283         uint32_t RESERVED2[1];           ///< Reserved
284   __IOM uint32_t COMP3;                  ///< Offset: 0x050 (R/W)  Comparator Register 3
285   __IOM uint32_t MASK3;                  ///< Offset: 0x054 (R/W)  Mask Register 3
286   __IOM uint32_t FUNCTION3;              ///< Offset: 0x058 (R/W)  Function Register 3
287 } DWT_Type;
288
289
290 /**************************************************************************************************/
291 /** \brief  Structure type to access the Trace Port Interface Register (TPI).
292  */
293 typedef struct
294 {
295   __IOM uint32_t SSPSR;                  ///< Offset: 0x000 (R/ )  Supported Parallel Port Size Register
296   __IOM uint32_t CSPSR;                  ///< Offset: 0x004 (R/W)  Current Parallel Port Size Register
297         uint32_t RESERVED0[2];           ///< Reserved
298   __IOM uint32_t ACPR;                   ///< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register
299         uint32_t RESERVED1[55];          ///< Reserved
300   __IOM uint32_t SPPR;                   ///< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register
301         uint32_t RESERVED2[131];         ///< Reserved
302   __IM  uint32_t FFSR;                   ///< Offset: 0x300 (R/ )  Formatter and Flush Status Register
303   __IOM uint32_t FFCR;                   ///< Offset: 0x304 (R/W)  Formatter and Flush Control Register
304   __IM  uint32_t FSCR;                   ///< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register
305         uint32_t RESERVED3[759];         ///< Reserved
306   __IM  uint32_t TRIGGER;                ///< Offset: 0xEE8 (R/ )  TRIGGER
307   __IM  uint32_t FIFO0;                  ///< Offset: 0xEEC (R/ )  Integration ETM Data
308   __IM  uint32_t ITATBCTR2;              ///< Offset: 0xEF0 (R/ )  ITATBCTR2
309         uint32_t RESERVED4[1];           ///< Reserved
310   __IM  uint32_t ITATBCTR0;              ///< Offset: 0xEF8 (R/ )  ITATBCTR0
311   __IM  uint32_t FIFO1;                  ///< Offset: 0xEFC (R/ )  Integration ITM Data
312   __IOM uint32_t ITCTRL;                 ///< Offset: 0xF00 (R/W)  Integration Mode Control
313         uint32_t RESERVED5[39];          ///< Reserved
314   __IOM uint32_t CLAIMSET;               ///< Offset: 0xFA0 (R/W)  Claim tag set
315   __IOM uint32_t CLAIMCLR;               ///< Offset: 0xFA4 (R/W)  Claim tag clear
316         uint32_t RESERVED7[8];           ///< Reserved
317   __IM  uint32_t DEVID;                  ///< Offset: 0xFC8 (R/ )  TPIU_DEVID
318   __IM  uint32_t DEVTYPE;                ///< Offset: 0xFCC (R/ )  TPIU_DEVTYPE
319 } TPI_Type;