amiro-blt / Target / Demo / ARMCM3_STM32F103_DiWheelDrive_GCC / Boot / lib / CMSIS / CM3 / CoreSupport / core_cm3.h @ 69661903
History | View | Annotate | Download (83.7 KB)
1 |
/**************************************************************************//** |
---|---|
2 |
* @file core_cm3.h
|
3 |
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File
|
4 |
* @version V1.30
|
5 |
* @date 30. October 2009
|
6 |
*
|
7 |
* @note
|
8 |
* Copyright (C) 2009 ARM Limited. All rights reserved.
|
9 |
*
|
10 |
* @par
|
11 |
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
12 |
* processor based microcontrollers. This file can be freely distributed
|
13 |
* within development tools that are supporting such ARM based processors.
|
14 |
*
|
15 |
* @par
|
16 |
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
17 |
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
18 |
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
19 |
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
20 |
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
21 |
*
|
22 |
******************************************************************************/
|
23 |
|
24 |
#ifndef __CM3_CORE_H__
|
25 |
#define __CM3_CORE_H__
|
26 |
|
27 |
/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration
|
28 |
*
|
29 |
* List of Lint messages which will be suppressed and not shown:
|
30 |
* - Error 10: \n
|
31 |
* register uint32_t __regBasePri __asm("basepri"); \n
|
32 |
* Error 10: Expecting ';'
|
33 |
* .
|
34 |
* - Error 530: \n
|
35 |
* return(__regBasePri); \n
|
36 |
* Warning 530: Symbol '__regBasePri' (line 264) not initialized
|
37 |
* .
|
38 |
* - Error 550: \n
|
39 |
* __regBasePri = (basePri & 0x1ff); \n
|
40 |
* Warning 550: Symbol '__regBasePri' (line 271) not accessed
|
41 |
* .
|
42 |
* - Error 754: \n
|
43 |
* uint32_t RESERVED0[24]; \n
|
44 |
* Info 754: local structure member '<some, not used in the HAL>' (line 109, file ./cm3_core.h) not referenced
|
45 |
* .
|
46 |
* - Error 750: \n
|
47 |
* #define __CM3_CORE_H__ \n
|
48 |
* Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced
|
49 |
* .
|
50 |
* - Error 528: \n
|
51 |
* static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n
|
52 |
* Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced
|
53 |
* .
|
54 |
* - Error 751: \n
|
55 |
* } InterruptType_Type; \n
|
56 |
* Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced
|
57 |
* .
|
58 |
* Note: To re-enable a Message, insert a space before 'lint' *
|
59 |
*
|
60 |
*/
|
61 |
|
62 |
/*lint -save */
|
63 |
/*lint -e10 */
|
64 |
/*lint -e530 */
|
65 |
/*lint -e550 */
|
66 |
/*lint -e754 */
|
67 |
/*lint -e750 */
|
68 |
/*lint -e528 */
|
69 |
/*lint -e751 */
|
70 |
|
71 |
|
72 |
/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions
|
73 |
This file defines all structures and symbols for CMSIS core:
|
74 |
- CMSIS version number
|
75 |
- Cortex-M core registers and bitfields
|
76 |
- Cortex-M core peripheral base address
|
77 |
@{
|
78 |
*/
|
79 |
|
80 |
#ifdef __cplusplus
|
81 |
extern "C" { |
82 |
#endif
|
83 |
|
84 |
#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ |
85 |
#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ |
86 |
#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ |
87 |
|
88 |
#define __CORTEX_M (0x03) /*!< Cortex core */ |
89 |
|
90 |
#include <stdint.h> /* Include standard types */ |
91 |
|
92 |
#if defined (__ICCARM__)
|
93 |
#include <intrinsics.h> /* IAR Intrinsics */ |
94 |
#endif
|
95 |
|
96 |
|
97 |
#ifndef __NVIC_PRIO_BITS
|
98 |
#define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ |
99 |
#endif
|
100 |
|
101 |
|
102 |
|
103 |
|
104 |
/**
|
105 |
* IO definitions
|
106 |
*
|
107 |
* define access restrictions to peripheral registers
|
108 |
*/
|
109 |
|
110 |
#ifdef __cplusplus
|
111 |
#define __I volatile /*!< defines 'read only' permissions */ |
112 |
#else
|
113 |
#define __I volatile const /*!< defines 'read only' permissions */ |
114 |
#endif
|
115 |
#define __O volatile /*!< defines 'write only' permissions */ |
116 |
#define __IO volatile /*!< defines 'read / write' permissions */ |
117 |
|
118 |
|
119 |
|
120 |
/*******************************************************************************
|
121 |
* Register Abstraction
|
122 |
******************************************************************************/
|
123 |
/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register
|
124 |
@{
|
125 |
*/
|
126 |
|
127 |
|
128 |
/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC
|
129 |
memory mapped structure for Nested Vectored Interrupt Controller (NVIC)
|
130 |
@{
|
131 |
*/
|
132 |
typedef struct |
133 |
{ |
134 |
__IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ |
135 |
uint32_t RESERVED0[24];
|
136 |
__IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ |
137 |
uint32_t RSERVED1[24];
|
138 |
__IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ |
139 |
uint32_t RESERVED2[24];
|
140 |
__IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ |
141 |
uint32_t RESERVED3[24];
|
142 |
__IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ |
143 |
uint32_t RESERVED4[56];
|
144 |
__IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ |
145 |
uint32_t RESERVED5[644];
|
146 |
__O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */
|
147 |
} NVIC_Type; |
148 |
/*@}*/ /* end of group CMSIS_CM3_NVIC */ |
149 |
|
150 |
|
151 |
/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB
|
152 |
memory mapped structure for System Control Block (SCB)
|
153 |
@{
|
154 |
*/
|
155 |
typedef struct |
156 |
{ |
157 |
__I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */
|
158 |
__IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */
|
159 |
__IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */
|
160 |
__IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */
|
161 |
__IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */
|
162 |
__IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */
|
163 |
__IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ |
164 |
__IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */
|
165 |
__IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */
|
166 |
__IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */
|
167 |
__IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */
|
168 |
__IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */
|
169 |
__IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */
|
170 |
__IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */
|
171 |
__I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ |
172 |
__I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */
|
173 |
__I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */
|
174 |
__I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ |
175 |
__I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ |
176 |
} SCB_Type; |
177 |
|
178 |
/* SCB CPUID Register Definitions */
|
179 |
#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ |
180 |
#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ |
181 |
|
182 |
#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ |
183 |
#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ |
184 |
|
185 |
#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ |
186 |
#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ |
187 |
|
188 |
#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ |
189 |
#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ |
190 |
|
191 |
/* SCB Interrupt Control State Register Definitions */
|
192 |
#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ |
193 |
#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ |
194 |
|
195 |
#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ |
196 |
#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ |
197 |
|
198 |
#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ |
199 |
#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ |
200 |
|
201 |
#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ |
202 |
#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ |
203 |
|
204 |
#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ |
205 |
#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ |
206 |
|
207 |
#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ |
208 |
#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ |
209 |
|
210 |
#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ |
211 |
#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ |
212 |
|
213 |
#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ |
214 |
#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ |
215 |
|
216 |
#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ |
217 |
#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ |
218 |
|
219 |
#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ |
220 |
#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ |
221 |
|
222 |
/* SCB Interrupt Control State Register Definitions */
|
223 |
#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ |
224 |
#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ |
225 |
|
226 |
#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ |
227 |
#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ |
228 |
|
229 |
/* SCB Application Interrupt and Reset Control Register Definitions */
|
230 |
#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ |
231 |
#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ |
232 |
|
233 |
#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ |
234 |
#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ |
235 |
|
236 |
#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ |
237 |
#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ |
238 |
|
239 |
#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ |
240 |
#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ |
241 |
|
242 |
#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ |
243 |
#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ |
244 |
|
245 |
#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ |
246 |
#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ |
247 |
|
248 |
#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ |
249 |
#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ |
250 |
|
251 |
/* SCB System Control Register Definitions */
|
252 |
#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ |
253 |
#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ |
254 |
|
255 |
#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ |
256 |
#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ |
257 |
|
258 |
#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ |
259 |
#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ |
260 |
|
261 |
/* SCB Configuration Control Register Definitions */
|
262 |
#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ |
263 |
#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ |
264 |
|
265 |
#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ |
266 |
#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ |
267 |
|
268 |
#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ |
269 |
#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ |
270 |
|
271 |
#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ |
272 |
#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ |
273 |
|
274 |
#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ |
275 |
#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ |
276 |
|
277 |
#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ |
278 |
#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ |
279 |
|
280 |
/* SCB System Handler Control and State Register Definitions */
|
281 |
#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ |
282 |
#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ |
283 |
|
284 |
#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ |
285 |
#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ |
286 |
|
287 |
#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ |
288 |
#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ |
289 |
|
290 |
#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ |
291 |
#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ |
292 |
|
293 |
#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ |
294 |