]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Core/src/Ref_DataStructs.txt
Initial Commit starting from:
[cmsis] / CMSIS / DoxyGen / Core / src / Ref_DataStructs.txt
1 /****************************    Data Structures    ***********************************************/\r
2 /** \brief  Union type to access the Application Program Status Register (APSR).\r
3  */\r
4 typedef union\r
5 {\r
6   struct\r
7   {\r
8 #if (__CORTEX_M != 0x04)\r
9     uint32_t _reserved0:27;              ///< bit:  0..26  Reserved\r
10 #else\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
14 #endif\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
22 } APSR_Type;\r
23 \r
24 \r
25 /**************************************************************************************************/\r
26 /** \brief  Union type to access the Interrupt Program Status Register (IPSR).\r
27  */\r
28 typedef union\r
29 {\r
30   struct\r
31   {\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
36 } IPSR_Type;\r
37 \r
38 \r
39 /**************************************************************************************************/\r
40 /** \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\r
41  */\r
42 typedef union\r
43 {\r
44   struct\r
45   {\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
49 #else\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
53 #endif\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
63 } xPSR_Type;\r
64 \r
65 \r
66 /**************************************************************************************************/\r
67 /** \brief  Union type to access the Control Registers (CONTROL).\r
68  */\r
69 typedef union\r
70 {\r
71   struct\r
72   {\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
79 } CONTROL_Type;\r
80 \r
81 \r
82 /**************************************************************************************************/\r
83 /** \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
84  */\r
85 typedef struct\r
86 {\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
100 }  NVIC_Type;\r
101 \r
102 \r
103 /**************************************************************************************************/\r
104 /** \brief  Structure type to access the System Control Block (SCB).\r
105  */\r
106 typedef struct\r
107 {\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
129 } SCB_Type;\r
130 \r
131 \r
132 /**************************************************************************************************/\r
133 /** \brief  Structure type to access the System Control and ID Register not in the SCB.\r
134  */\r
135 typedef struct\r
136 {\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
140 } SCnSCB_Type;\r
141 \r
142 \r
143 /**************************************************************************************************/\r
144 /** \brief  Structure type to access the System Timer (SysTick).\r
145  */\r
146 typedef struct\r
147 {\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
152 } SysTick_Type;\r
153 \r
154 \r
155 /**************************************************************************************************/\r
156 /** \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
157  */\r
158 typedef struct\r
159 {\r
160   __OM  union\r
161   {\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
172 } ITM_Type;\r
173 \r
174 \r
175 /**************************************************************************************************/\r
176 /** \brief  Structure type to access the Memory Protection Unit (MPU).\r
177  */\r
178 typedef struct\r
179 {\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
191 } MPU_Type;\r
192 \r
193 \r
194 /**************************************************************************************************/\r
195 /** \brief  Structure type to access the Floating Point Unit (FPU).\r
196  */\r
197 typedef struct\r
198 {\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
205 } FPU_Type;\r
206 \r
207 \r
208 /**************************************************************************************************/\r
209 /** \brief  Structure type to access the Core Debug Register (CoreDebug).\r
210  */\r
211 typedef struct\r
212 {\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
217 } CoreDebug_Type;\r
218 \r
219 \r
220 /**************************************************************************************************/\r
221 /** \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\r
222  */\r
223 typedef struct\r
224 {\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
248 } DWT_Type;\r
249 \r
250 \r
251 /**************************************************************************************************/\r
252 /** \brief  Structure type to access the Trace Port Interface Register (TPI).\r
253  */\r
254 typedef struct\r
255 {\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
280 } TPI_Type;\r