1 //*****************************************************************************
2 //
3 // hw_nvic.h - Macros used when accessing the NVIC hardware.
4 //
5 // Copyright (c) 2005-2020 Texas Instruments Incorporated.  All rights reserved.
6 // Software License Agreement
7 //
8 //   Redistribution and use in source and binary forms, with or without
9 //   modification, are permitted provided that the following conditions
10 //   are met:
11 //
12 //   Redistributions of source code must retain the above copyright
13 //   notice, this list of conditions and the following disclaimer.
14 //
15 //   Redistributions in binary form must reproduce the above copyright
16 //   notice, this list of conditions and the following disclaimer in the
17 //   documentation and/or other materials provided with the
18 //   distribution.
19 //
20 //   Neither the name of Texas Instruments Incorporated nor the names of
21 //   its contributors may be used to endorse or promote products derived
22 //   from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 //
36 // This is part of revision 2.2.0.295 of the Tiva Firmware Development Package.
37 //
38 //*****************************************************************************
39 
40 #ifndef __HW_NVIC_H__
41 #define __HW_NVIC_H__
42 
43 //*****************************************************************************
44 //
45 // The following are defines for the NVIC register addresses.
46 //
47 //*****************************************************************************
48 #define NVIC_ACTLR              0xE000E008  // Auxiliary Control
49 #define NVIC_ST_CTRL            0xE000E010  // SysTick Control and Status
50                                             // Register
51 #define NVIC_ST_RELOAD          0xE000E014  // SysTick Reload Value Register
52 #define NVIC_ST_CURRENT         0xE000E018  // SysTick Current Value Register
53 #define NVIC_EN0                0xE000E100  // Interrupt 0-31 Set Enable
54 #define NVIC_EN1                0xE000E104  // Interrupt 32-63 Set Enable
55 #define NVIC_EN2                0xE000E108  // Interrupt 64-95 Set Enable
56 #define NVIC_EN3                0xE000E10C  // Interrupt 96-127 Set Enable
57 #define NVIC_EN4                0xE000E110  // Interrupt 128-159 Set Enable
58 #define NVIC_DIS0               0xE000E180  // Interrupt 0-31 Clear Enable
59 #define NVIC_DIS1               0xE000E184  // Interrupt 32-63 Clear Enable
60 #define NVIC_DIS2               0xE000E188  // Interrupt 64-95 Clear Enable
61 #define NVIC_DIS3               0xE000E18C  // Interrupt 96-127 Clear Enable
62 #define NVIC_DIS4               0xE000E190  // Interrupt 128-159 Clear Enable
63 #define NVIC_PEND0              0xE000E200  // Interrupt 0-31 Set Pending
64 #define NVIC_PEND1              0xE000E204  // Interrupt 32-63 Set Pending
65 #define NVIC_PEND2              0xE000E208  // Interrupt 64-95 Set Pending
66 #define NVIC_PEND3              0xE000E20C  // Interrupt 96-127 Set Pending
67 #define NVIC_PEND4              0xE000E210  // Interrupt 128-159 Set Pending
68 #define NVIC_UNPEND0            0xE000E280  // Interrupt 0-31 Clear Pending
69 #define NVIC_UNPEND1            0xE000E284  // Interrupt 32-63 Clear Pending
70 #define NVIC_UNPEND2            0xE000E288  // Interrupt 64-95 Clear Pending
71 #define NVIC_UNPEND3            0xE000E28C  // Interrupt 96-127 Clear Pending
72 #define NVIC_UNPEND4            0xE000E290  // Interrupt 128-159 Clear Pending
73 #define NVIC_ACTIVE0            0xE000E300  // Interrupt 0-31 Active Bit
74 #define NVIC_ACTIVE1            0xE000E304  // Interrupt 32-63 Active Bit
75 #define NVIC_ACTIVE2            0xE000E308  // Interrupt 64-95 Active Bit
76 #define NVIC_ACTIVE3            0xE000E30C  // Interrupt 96-127 Active Bit
77 #define NVIC_ACTIVE4            0xE000E310  // Interrupt 128-159 Active Bit
78 #define NVIC_PRI0               0xE000E400  // Interrupt 0-3 Priority
79 #define NVIC_PRI1               0xE000E404  // Interrupt 4-7 Priority
80 #define NVIC_PRI2               0xE000E408  // Interrupt 8-11 Priority
81 #define NVIC_PRI3               0xE000E40C  // Interrupt 12-15 Priority
82 #define NVIC_PRI4               0xE000E410  // Interrupt 16-19 Priority
83 #define NVIC_PRI5               0xE000E414  // Interrupt 20-23 Priority
84 #define NVIC_PRI6               0xE000E418  // Interrupt 24-27 Priority
85 #define NVIC_PRI7               0xE000E41C  // Interrupt 28-31 Priority
86 #define NVIC_PRI8               0xE000E420  // Interrupt 32-35 Priority
87 #define NVIC_PRI9               0xE000E424  // Interrupt 36-39 Priority
88 #define NVIC_PRI10              0xE000E428  // Interrupt 40-43 Priority
89 #define NVIC_PRI11              0xE000E42C  // Interrupt 44-47 Priority
90 #define NVIC_PRI12              0xE000E430  // Interrupt 48-51 Priority
91 #define NVIC_PRI13              0xE000E434  // Interrupt 52-55 Priority
92 #define NVIC_PRI14              0xE000E438  // Interrupt 56-59 Priority
93 #define NVIC_PRI15              0xE000E43C  // Interrupt 60-63 Priority
94 #define NVIC_PRI16              0xE000E440  // Interrupt 64-67 Priority
95 #define NVIC_PRI17              0xE000E444  // Interrupt 68-71 Priority
96 #define NVIC_PRI18              0xE000E448  // Interrupt 72-75 Priority
97 #define NVIC_PRI19              0xE000E44C  // Interrupt 76-79 Priority
98 #define NVIC_PRI20              0xE000E450  // Interrupt 80-83 Priority
99 #define NVIC_PRI21              0xE000E454  // Interrupt 84-87 Priority
100 #define NVIC_PRI22              0xE000E458  // Interrupt 88-91 Priority
101 #define NVIC_PRI23              0xE000E45C  // Interrupt 92-95 Priority
102 #define NVIC_PRI24              0xE000E460  // Interrupt 96-99 Priority
103 #define NVIC_PRI25              0xE000E464  // Interrupt 100-103 Priority
104 #define NVIC_PRI26              0xE000E468  // Interrupt 104-107 Priority
105 #define NVIC_PRI27              0xE000E46C  // Interrupt 108-111 Priority
106 #define NVIC_PRI28              0xE000E470  // Interrupt 112-115 Priority
107 #define NVIC_PRI29              0xE000E474  // Interrupt 116-119 Priority
108 #define NVIC_PRI30              0xE000E478  // Interrupt 120-123 Priority
109 #define NVIC_PRI31              0xE000E47C  // Interrupt 124-127 Priority
110 #define NVIC_PRI32              0xE000E480  // Interrupt 128-131 Priority
111 #define NVIC_PRI33              0xE000E484  // Interrupt 132-135 Priority
112 #define NVIC_PRI34              0xE000E488  // Interrupt 136-139 Priority
113 #define NVIC_CPUID              0xE000ED00  // CPU ID Base
114 #define NVIC_INT_CTRL           0xE000ED04  // Interrupt Control and State
115 #define NVIC_VTABLE             0xE000ED08  // Vector Table Offset
116 #define NVIC_APINT              0xE000ED0C  // Application Interrupt and Reset
117                                             // Control
118 #define NVIC_SYS_CTRL           0xE000ED10  // System Control
119 #define NVIC_CFG_CTRL           0xE000ED14  // Configuration and Control
120 #define NVIC_SYS_PRI1           0xE000ED18  // System Handler Priority 1
121 #define NVIC_SYS_PRI2           0xE000ED1C  // System Handler Priority 2
122 #define NVIC_SYS_PRI3           0xE000ED20  // System Handler Priority 3
123 #define NVIC_SYS_HND_CTRL       0xE000ED24  // System Handler Control and State
124 #define NVIC_FAULT_STAT         0xE000ED28  // Configurable Fault Status
125 #define NVIC_HFAULT_STAT        0xE000ED2C  // Hard Fault Status
126 #define NVIC_DEBUG_STAT         0xE000ED30  // Debug Status Register
127 #define NVIC_MM_ADDR            0xE000ED34  // Memory Management Fault Address
128 #define NVIC_FAULT_ADDR         0xE000ED38  // Bus Fault Address
129 #define NVIC_CPAC               0xE000ED88  // Coprocessor Access Control
130 #define NVIC_MPU_TYPE           0xE000ED90  // MPU Type
131 #define NVIC_MPU_CTRL           0xE000ED94  // MPU Control
132 #define NVIC_MPU_NUMBER         0xE000ED98  // MPU Region Number
133 #define NVIC_MPU_BASE           0xE000ED9C  // MPU Region Base Address
134 #define NVIC_MPU_ATTR           0xE000EDA0  // MPU Region Attribute and Size
135 #define NVIC_MPU_BASE1          0xE000EDA4  // MPU Region Base Address Alias 1
136 #define NVIC_MPU_ATTR1          0xE000EDA8  // MPU Region Attribute and Size
137                                             // Alias 1
138 #define NVIC_MPU_BASE2          0xE000EDAC  // MPU Region Base Address Alias 2
139 #define NVIC_MPU_ATTR2          0xE000EDB0  // MPU Region Attribute and Size
140                                             // Alias 2
141 #define NVIC_MPU_BASE3          0xE000EDB4  // MPU Region Base Address Alias 3
142 #define NVIC_MPU_ATTR3          0xE000EDB8  // MPU Region Attribute and Size
143                                             // Alias 3
144 #define NVIC_DBG_CTRL           0xE000EDF0  // Debug Control and Status Reg
145 #define NVIC_DBG_XFER           0xE000EDF4  // Debug Core Reg. Transfer Select
146 #define NVIC_DBG_DATA           0xE000EDF8  // Debug Core Register Data
147 #define NVIC_DBG_INT            0xE000EDFC  // Debug Reset Interrupt Control
148 #define NVIC_SW_TRIG            0xE000EF00  // Software Trigger Interrupt
149 #define NVIC_FPCC               0xE000EF34  // Floating-Point Context Control
150 #define NVIC_FPCA               0xE000EF38  // Floating-Point Context Address
151 #define NVIC_FPDSC              0xE000EF3C  // Floating-Point Default Status
152                                             // Control
153 
154 //*****************************************************************************
155 //
156 // The following are defines for the bit fields in the NVIC_ACTLR register.
157 //
158 //*****************************************************************************
159 #define NVIC_ACTLR_DISOOFP      0x00000200  // Disable Out-Of-Order Floating
160                                             // Point
161 #define NVIC_ACTLR_DISFPCA      0x00000100  // Disable CONTROL
162 #define NVIC_ACTLR_DISFOLD      0x00000004  // Disable IT Folding
163 #define NVIC_ACTLR_DISWBUF      0x00000002  // Disable Write Buffer
164 #define NVIC_ACTLR_DISMCYC      0x00000001  // Disable Interrupts of Multiple
165                                             // Cycle Instructions
166 
167 //*****************************************************************************
168 //
169 // The following are defines for the bit fields in the NVIC_ST_CTRL register.
170 //
171 //*****************************************************************************
172 #define NVIC_ST_CTRL_COUNT      0x00010000  // Count Flag
173 #define NVIC_ST_CTRL_CLK_SRC    0x00000004  // Clock Source
174 #define NVIC_ST_CTRL_INTEN      0x00000002  // Interrupt Enable
175 #define NVIC_ST_CTRL_ENABLE     0x00000001  // Enable
176 
177 //*****************************************************************************
178 //
179 // The following are defines for the bit fields in the NVIC_ST_RELOAD register.
180 //
181 //*****************************************************************************
182 #define NVIC_ST_RELOAD_M        0x00FFFFFF  // Reload Value
183 #define NVIC_ST_RELOAD_S        0
184 
185 //*****************************************************************************
186 //
187 // The following are defines for the bit fields in the NVIC_ST_CURRENT
188 // register.
189 //
190 //*****************************************************************************
191 #define NVIC_ST_CURRENT_M       0x00FFFFFF  // Current Value
192 #define NVIC_ST_CURRENT_S       0
193 
194 //*****************************************************************************
195 //
196 // The following are defines for the bit fields in the NVIC_EN0 register.
197 //
198 //*****************************************************************************
199 #define NVIC_EN0_INT_M          0xFFFFFFFF  // Interrupt Enable
200 
201 //*****************************************************************************
202 //
203 // The following are defines for the bit fields in the NVIC_EN1 register.
204 //
205 //*****************************************************************************
206 #define NVIC_EN1_INT_M          0xFFFFFFFF  // Interrupt Enable
207 
208 //*****************************************************************************
209 //
210 // The following are defines for the bit fields in the NVIC_EN2 register.
211 //
212 //*****************************************************************************
213 #define NVIC_EN2_INT_M          0xFFFFFFFF  // Interrupt Enable
214 
215 //*****************************************************************************
216 //
217 // The following are defines for the bit fields in the NVIC_EN3 register.
218 //
219 //*****************************************************************************
220 #define NVIC_EN3_INT_M          0xFFFFFFFF  // Interrupt Enable
221 
222 //*****************************************************************************
223 //
224 // The following are defines for the bit fields in the NVIC_EN4 register.
225 //
226 //*****************************************************************************
227 #define NVIC_EN4_INT_M          0x000007FF  // Interrupt Enable
228 
229 //*****************************************************************************
230 //
231 // The following are defines for the bit fields in the NVIC_DIS0 register.
232 //
233 //*****************************************************************************
234 #define NVIC_DIS0_INT_M         0xFFFFFFFF  // Interrupt Disable
235 
236 //*****************************************************************************
237 //
238 // The following are defines for the bit fields in the NVIC_DIS1 register.
239 //
240 //*****************************************************************************
241 #define NVIC_DIS1_INT_M         0xFFFFFFFF  // Interrupt Disable
242 
243 //*****************************************************************************
244 //
245 // The following are defines for the bit fields in the NVIC_DIS2 register.
246 //
247 //*****************************************************************************
248 #define NVIC_DIS2_INT_M         0xFFFFFFFF  // Interrupt Disable
249 
250 //*****************************************************************************
251 //
252 // The following are defines for the bit fields in the NVIC_DIS3 register.
253 //
254 //*****************************************************************************
255 #define NVIC_DIS3_INT_M         0xFFFFFFFF  // Interrupt Disable
256 
257 //*****************************************************************************
258 //
259 // The following are defines for the bit fields in the NVIC_DIS4 register.
260 //
261 //*****************************************************************************
262 #define NVIC_DIS4_INT_M         0x000007FF  // Interrupt Disable
263 
264 //*****************************************************************************
265 //
266 // The following are defines for the bit fields in the NVIC_PEND0 register.
267 //
268 //*****************************************************************************
269 #define NVIC_PEND0_INT_M        0xFFFFFFFF  // Interrupt Set Pending
270 
271 //*****************************************************************************
272 //
273 // The following are defines for the bit fields in the NVIC_PEND1 register.
274 //
275 //*****************************************************************************
276 #define NVIC_PEND1_INT_M        0xFFFFFFFF  // Interrupt Set Pending
277 
278 //*****************************************************************************
279 //
280 // The following are defines for the bit fields in the NVIC_PEND2 register.
281 //
282 //*****************************************************************************
283 #define NVIC_PEND2_INT_M        0xFFFFFFFF  // Interrupt Set Pending
284 
285 //*****************************************************************************
286 //
287 // The following are defines for the bit fields in the NVIC_PEND3 register.
288 //
289 //*****************************************************************************
290 #define NVIC_PEND3_INT_M        0xFFFFFFFF  // Interrupt Set Pending
291 
292 //*****************************************************************************
293 //
294 // The following are defines for the bit fields in the NVIC_PEND4 register.
295 //
296 //*****************************************************************************
297 #define NVIC_PEND4_INT_M        0x000007FF  // Interrupt Set Pending
298 
299 //*****************************************************************************
300 //
301 // The following are defines for the bit fields in the NVIC_UNPEND0 register.
302 //
303 //*****************************************************************************
304 #define NVIC_UNPEND0_INT_M      0xFFFFFFFF  // Interrupt Clear Pending
305 
306 //*****************************************************************************
307 //
308 // The following are defines for the bit fields in the NVIC_UNPEND1 register.
309 //
310 //*****************************************************************************
311 #define NVIC_UNPEND1_INT_M      0xFFFFFFFF  // Interrupt Clear Pending
312 
313 //*****************************************************************************
314 //
315 // The following are defines for the bit fields in the NVIC_UNPEND2 register.
316 //
317 //*****************************************************************************
318 #define NVIC_UNPEND2_INT_M      0xFFFFFFFF  // Interrupt Clear Pending
319 
320 //*****************************************************************************
321 //
322 // The following are defines for the bit fields in the NVIC_UNPEND3 register.
323 //
324 //*****************************************************************************
325 #define NVIC_UNPEND3_INT_M      0xFFFFFFFF  // Interrupt Clear Pending
326 
327 //*****************************************************************************
328 //
329 // The following are defines for the bit fields in the NVIC_UNPEND4 register.
330 //
331 //*****************************************************************************
332 #define NVIC_UNPEND4_INT_M      0x000007FF  // Interrupt Clear Pending
333 
334 //*****************************************************************************
335 //
336 // The following are defines for the bit fields in the NVIC_ACTIVE0 register.
337 //
338 //*****************************************************************************
339 #define NVIC_ACTIVE0_INT_M      0xFFFFFFFF  // Interrupt Active
340 
341 //*****************************************************************************
342 //
343 // The following are defines for the bit fields in the NVIC_ACTIVE1 register.
344 //
345 //*****************************************************************************
346 #define NVIC_ACTIVE1_INT_M      0xFFFFFFFF  // Interrupt Active
347 
348 //*****************************************************************************
349 //
350 // The following are defines for the bit fields in the NVIC_ACTIVE2 register.
351 //
352 //*****************************************************************************
353 #define NVIC_ACTIVE2_INT_M      0xFFFFFFFF  // Interrupt Active
354 
355 //*****************************************************************************
356 //
357 // The following are defines for the bit fields in the NVIC_ACTIVE3 register.
358 //
359 //*****************************************************************************
360 #define NVIC_ACTIVE3_INT_M      0xFFFFFFFF  // Interrupt Active
361 
362 //*****************************************************************************
363 //
364 // The following are defines for the bit fields in the NVIC_ACTIVE4 register.
365 //
366 //*****************************************************************************
367 #define NVIC_ACTIVE4_INT_M      0x000007FF  // Interrupt Active
368 
369 //*****************************************************************************
370 //
371 // The following are defines for the bit fields in the NVIC_PRI0 register.
372 //
373 //*****************************************************************************
374 #define NVIC_PRI0_INT3_M        0xE0000000  // Interrupt 3 Priority Mask
375 #define NVIC_PRI0_INT2_M        0x00E00000  // Interrupt 2 Priority Mask
376 #define NVIC_PRI0_INT1_M        0x0000E000  // Interrupt 1 Priority Mask
377 #define NVIC_PRI0_INT0_M        0x000000E0  // Interrupt 0 Priority Mask
378 #define NVIC_PRI0_INT3_S        29
379 #define NVIC_PRI0_INT2_S        21
380 #define NVIC_PRI0_INT1_S        13
381 #define NVIC_PRI0_INT0_S        5
382 
383 //*****************************************************************************
384 //
385 // The following are defines for the bit fields in the NVIC_PRI1 register.
386 //
387 //*****************************************************************************
388 #define NVIC_PRI1_INT7_M        0xE0000000  // Interrupt 7 Priority Mask
389 #define NVIC_PRI1_INT6_M        0x00E00000  // Interrupt 6 Priority Mask
390 #define NVIC_PRI1_INT5_M        0x0000E000  // Interrupt 5 Priority Mask
391 #define NVIC_PRI1_INT4_M        0x000000E0  // Interrupt 4 Priority Mask
392 #define NVIC_PRI1_INT7_S        29
393 #define NVIC_PRI1_INT6_S        21
394 #define NVIC_PRI1_INT5_S        13
395 #define NVIC_PRI1_INT4_S        5
396 
397 //*****************************************************************************
398 //
399 // The following are defines for the bit fields in the NVIC_PRI2 register.
400 //
401 //*****************************************************************************
402 #define NVIC_PRI2_INT11_M       0xE0000000  // Interrupt 11 Priority Mask
403 #define NVIC_PRI2_INT10_M       0x00E00000  // Interrupt 10 Priority Mask
404 #define NVIC_PRI2_INT9_M        0x0000E000  // Interrupt 9 Priority Mask
405 #define NVIC_PRI2_INT8_M        0x000000E0  // Interrupt 8 Priority Mask
406 #define NVIC_PRI2_INT11_S       29
407 #define NVIC_PRI2_INT10_S       21
408 #define NVIC_PRI2_INT9_S        13
409 #define NVIC_PRI2_INT8_S        5
410 
411 //*****************************************************************************
412 //
413 // The following are defines for the bit fields in the NVIC_PRI3 register.
414 //
415 //*****************************************************************************
416 #define NVIC_PRI3_INT15_M       0xE0000000  // Interrupt 15 Priority Mask
417 #define NVIC_PRI3_INT14_M       0x00E00000  // Interrupt 14 Priority Mask
418 #define NVIC_PRI3_INT13_M       0x0000E000  // Interrupt 13 Priority Mask
419 #define NVIC_PRI3_INT12_M       0x000000E0  // Interrupt 12 Priority Mask
420 #define NVIC_PRI3_INT15_S       29
421 #define NVIC_PRI3_INT14_S       21
422 #define NVIC_PRI3_INT13_S       13
423 #define NVIC_PRI3_INT12_S       5
424 
425 //*****************************************************************************
426 //
427 // The following are defines for the bit fields in the NVIC_PRI4 register.
428 //
429 //*****************************************************************************
430 #define NVIC_PRI4_INT19_M       0xE0000000  // Interrupt 19 Priority Mask
431 #define NVIC_PRI4_INT18_M       0x00E00000  // Interrupt 18 Priority Mask
432 #define NVIC_PRI4_INT17_M       0x0000E000  // Interrupt 17 Priority Mask
433 #define NVIC_PRI4_INT16_M       0x000000E0  // Interrupt 16 Priority Mask
434 #define NVIC_PRI4_INT19_S       29
435 #define NVIC_PRI4_INT18_S       21
436 #define NVIC_PRI4_INT17_S       13
437 #define NVIC_PRI4_INT16_S       5
438 
439 //*****************************************************************************
440 //
441 // The following are defines for the bit fields in the NVIC_PRI5 register.
442 //
443 //*****************************************************************************
444 #define NVIC_PRI5_INT23_M       0xE0000000  // Interrupt 23 Priority Mask
445 #define NVIC_PRI5_INT22_M       0x00E00000  // Interrupt 22 Priority Mask
446 #define NVIC_PRI5_INT21_M       0x0000E000  // Interrupt 21 Priority Mask
447 #define NVIC_PRI5_INT20_M       0x000000E0  // Interrupt 20 Priority Mask
448 #define NVIC_PRI5_INT23_S       29
449 #define NVIC_PRI5_INT22_S       21
450 #define NVIC_PRI5_INT21_S       13
451 #define NVIC_PRI5_INT20_S       5
452 
453 //*****************************************************************************
454 //
455 // The following are defines for the bit fields in the NVIC_PRI6 register.
456 //
457 //*****************************************************************************
458 #define NVIC_PRI6_INT27_M       0xE0000000  // Interrupt 27 Priority Mask
459 #define NVIC_PRI6_INT26_M       0x00E00000  // Interrupt 26 Priority Mask
460 #define NVIC_PRI6_INT25_M       0x0000E000  // Interrupt 25 Priority Mask
461 #define NVIC_PRI6_INT24_M       0x000000E0  // Interrupt 24 Priority Mask
462 #define NVIC_PRI6_INT27_S       29
463 #define NVIC_PRI6_INT26_S       21
464 #define NVIC_PRI6_INT25_S       13
465 #define NVIC_PRI6_INT24_S       5
466 
467 //*****************************************************************************
468 //
469 // The following are defines for the bit fields in the NVIC_PRI7 register.
470 //
471 //*****************************************************************************
472 #define NVIC_PRI7_INT31_M       0xE0000000  // Interrupt 31 Priority Mask
473 #define NVIC_PRI7_INT30_M       0x00E00000  // Interrupt 30 Priority Mask
474 #define NVIC_PRI7_INT29_M       0x0000E000  // Interrupt 29 Priority Mask
475 #define NVIC_PRI7_INT28_M       0x000000E0  // Interrupt 28 Priority Mask
476 #define NVIC_PRI7_INT31_S       29
477 #define NVIC_PRI7_INT30_S       21
478 #define NVIC_PRI7_INT29_S       13
479 #define NVIC_PRI7_INT28_S       5
480 
481 //*****************************************************************************
482 //
483 // The following are defines for the bit fields in the NVIC_PRI8 register.
484 //
485 //*****************************************************************************
486 #define NVIC_PRI8_INT35_M       0xE0000000  // Interrupt 35 Priority Mask
487 #define NVIC_PRI8_INT34_M       0x00E00000  // Interrupt 34 Priority Mask
488 #define NVIC_PRI8_INT33_M       0x0000E000  // Interrupt 33 Priority Mask
489 #define NVIC_PRI8_INT32_M       0x000000E0  // Interrupt 32 Priority Mask
490 #define NVIC_PRI8_INT35_S       29
491 #define NVIC_PRI8_INT34_S       21
492 #define NVIC_PRI8_INT33_S       13
493 #define NVIC_PRI8_INT32_S       5
494 
495 //*****************************************************************************
496 //
497 // The following are defines for the bit fields in the NVIC_PRI9 register.
498 //
499 //*****************************************************************************
500 #define NVIC_PRI9_INT39_M       0xE0000000  // Interrupt 39 Priority Mask
501 #define NVIC_PRI9_INT38_M       0x00E00000  // Interrupt 38 Priority Mask
502 #define NVIC_PRI9_INT37_M       0x0000E000  // Interrupt 37 Priority Mask
503 #define NVIC_PRI9_INT36_M       0x000000E0  // Interrupt 36 Priority Mask
504 #define NVIC_PRI9_INT39_S       29
505 #define NVIC_PRI9_INT38_S       21
506 #define NVIC_PRI9_INT37_S       13
507 #define NVIC_PRI9_INT36_S       5
508 
509 //*****************************************************************************
510 //
511 // The following are defines for the bit fields in the NVIC_PRI10 register.
512 //
513 //*****************************************************************************
514 #define NVIC_PRI10_INT43_M      0xE0000000  // Interrupt 43 Priority Mask
515 #define NVIC_PRI10_INT42_M      0x00E00000  // Interrupt 42 Priority Mask
516 #define NVIC_PRI10_INT41_M      0x0000E000  // Interrupt 41 Priority Mask
517 #define NVIC_PRI10_INT40_M      0x000000E0  // Interrupt 40 Priority Mask
518 #define NVIC_PRI10_INT43_S      29
519 #define NVIC_PRI10_INT42_S      21
520 #define NVIC_PRI10_INT41_S      13
521 #define NVIC_PRI10_INT40_S      5
522 
523 //*****************************************************************************
524 //
525 // The following are defines for the bit fields in the NVIC_PRI11 register.
526 //
527 //*****************************************************************************
528 #define NVIC_PRI11_INT47_M      0xE0000000  // Interrupt 47 Priority Mask
529 #define NVIC_PRI11_INT46_M      0x00E00000  // Interrupt 46 Priority Mask
530 #define NVIC_PRI11_INT45_M      0x0000E000  // Interrupt 45 Priority Mask
531 #define NVIC_PRI11_INT44_M      0x000000E0  // Interrupt 44 Priority Mask
532 #define NVIC_PRI11_INT47_S      29
533 #define NVIC_PRI11_INT46_S      21
534 #define NVIC_PRI11_INT45_S      13
535 #define NVIC_PRI11_INT44_S      5
536 
537 //*****************************************************************************
538 //
539 // The following are defines for the bit fields in the NVIC_PRI12 register.
540 //
541 //*****************************************************************************
542 #define NVIC_PRI12_INT51_M      0xE0000000  // Interrupt 51 Priority Mask
543 #define NVIC_PRI12_INT50_M      0x00E00000  // Interrupt 50 Priority Mask
544 #define NVIC_PRI12_INT49_M      0x0000E000  // Interrupt 49 Priority Mask
545 #define NVIC_PRI12_INT48_M      0x000000E0  // Interrupt 48 Priority Mask
546 #define NVIC_PRI12_INT51_S      29
547 #define NVIC_PRI12_INT50_S      21
548 #define NVIC_PRI12_INT49_S      13
549 #define NVIC_PRI12_INT48_S      5
550 
551 //*****************************************************************************
552 //
553 // The following are defines for the bit fields in the NVIC_PRI13 register.
554 //
555 //*****************************************************************************
556 #define NVIC_PRI13_INT55_M      0xE0000000  // Interrupt 55 Priority Mask
557 #define NVIC_PRI13_INT54_M      0x00E00000  // Interrupt 54 Priority Mask
558 #define NVIC_PRI13_INT53_M      0x0000E000  // Interrupt 53 Priority Mask
559 #define NVIC_PRI13_INT52_M      0x000000E0  // Interrupt 52 Priority Mask
560 #define NVIC_PRI13_INT55_S      29
561 #define NVIC_PRI13_INT54_S      21
562 #define NVIC_PRI13_INT53_S      13
563 #define NVIC_PRI13_INT52_S      5
564 
565 //*****************************************************************************
566 //
567 // The following are defines for the bit fields in the NVIC_PRI14 register.
568 //
569 //*****************************************************************************
570 #define NVIC_PRI14_INTD_M       0xE0000000  // Interrupt 59 Priority Mask
571 #define NVIC_PRI14_INTC_M       0x00E00000  // Interrupt 58 Priority Mask
572 #define NVIC_PRI14_INTB_M       0x0000E000  // Interrupt 57 Priority Mask
573 #define NVIC_PRI14_INTA_M       0x000000E0  // Interrupt 56 Priority Mask
574 #define NVIC_PRI14_INTD_S       29
575 #define NVIC_PRI14_INTC_S       21
576 #define NVIC_PRI14_INTB_S       13
577 #define NVIC_PRI14_INTA_S       5
578 
579 //*****************************************************************************
580 //
581 // The following are defines for the bit fields in the NVIC_PRI15 register.
582 //
583 //*****************************************************************************
584 #define NVIC_PRI15_INTD_M       0xE0000000  // Interrupt 63 Priority Mask
585 #define NVIC_PRI15_INTC_M       0x00E00000  // Interrupt 62 Priority Mask
586 #define NVIC_PRI15_INTB_M       0x0000E000  // Interrupt 61 Priority Mask
587 #define NVIC_PRI15_INTA_M       0x000000E0  // Interrupt 60 Priority Mask
588 #define NVIC_PRI15_INTD_S       29
589 #define NVIC_PRI15_INTC_S       21
590 #define NVIC_PRI15_INTB_S       13
591 #define NVIC_PRI15_INTA_S       5
592 
593 //*****************************************************************************
594 //
595 // The following are defines for the bit fields in the NVIC_PRI16 register.
596 //
597 //*****************************************************************************
598 #define NVIC_PRI16_INTD_M       0xE0000000  // Interrupt 67 Priority Mask
599 #define NVIC_PRI16_INTC_M       0x00E00000  // Interrupt 66 Priority Mask
600 #define NVIC_PRI16_INTB_M       0x0000E000  // Interrupt 65 Priority Mask
601 #define NVIC_PRI16_INTA_M       0x000000E0  // Interrupt 64 Priority Mask
602 #define NVIC_PRI16_INTD_S       29
603 #define NVIC_PRI16_INTC_S       21
604 #define NVIC_PRI16_INTB_S       13
605 #define NVIC_PRI16_INTA_S       5
606 
607 //*****************************************************************************
608 //
609 // The following are defines for the bit fields in the NVIC_PRI17 register.
610 //
611 //*****************************************************************************
612 #define NVIC_PRI17_INTD_M       0xE0000000  // Interrupt 71 Priority Mask
613 #define NVIC_PRI17_INTC_M       0x00E00000  // Interrupt 70 Priority Mask
614 #define NVIC_PRI17_INTB_M       0x0000E000  // Interrupt 69 Priority Mask
615 #define NVIC_PRI17_INTA_M       0x000000E0  // Interrupt 68 Priority Mask
616 #define NVIC_PRI17_INTD_S       29
617 #define NVIC_PRI17_INTC_S       21
618 #define NVIC_PRI17_INTB_S       13
619 #define NVIC_PRI17_INTA_S       5
620 
621 //*****************************************************************************
622 //
623 // The following are defines for the bit fields in the NVIC_PRI18 register.
624 //
625 //*****************************************************************************
626 #define NVIC_PRI18_INTD_M       0xE0000000  // Interrupt 75 Priority Mask
627 #define NVIC_PRI18_INTC_M       0x00E00000  // Interrupt 74 Priority Mask
628 #define NVIC_PRI18_INTB_M       0x0000E000  // Interrupt 73 Priority Mask
629 #define NVIC_PRI18_INTA_M       0x000000E0  // Interrupt 72 Priority Mask
630 #define NVIC_PRI18_INTD_S       29
631 #define NVIC_PRI18_INTC_S       21
632 #define NVIC_PRI18_INTB_S       13
633 #define NVIC_PRI18_INTA_S       5
634 
635 //*****************************************************************************
636 //
637 // The following are defines for the bit fields in the NVIC_PRI19 register.
638 //
639 //*****************************************************************************
640 #define NVIC_PRI19_INTD_M       0xE0000000  // Interrupt 79 Priority Mask
641 #define NVIC_PRI19_INTC_M       0x00E00000  // Interrupt 78 Priority Mask
642 #define NVIC_PRI19_INTB_M       0x0000E000  // Interrupt 77 Priority Mask
643 #define NVIC_PRI19_INTA_M       0x000000E0  // Interrupt 76 Priority Mask
644 #define NVIC_PRI19_INTD_S       29
645 #define NVIC_PRI19_INTC_S       21
646 #define NVIC_PRI19_INTB_S       13
647 #define NVIC_PRI19_INTA_S       5
648 
649 //*****************************************************************************
650 //
651 // The following are defines for the bit fields in the NVIC_PRI20 register.
652 //
653 //*****************************************************************************
654 #define NVIC_PRI20_INTD_M       0xE0000000  // Interrupt 83 Priority Mask
655 #define NVIC_PRI20_INTC_M       0x00E00000  // Interrupt 82 Priority Mask
656 #define NVIC_PRI20_INTB_M       0x0000E000  // Interrupt 81 Priority Mask
657 #define NVIC_PRI20_INTA_M       0x000000E0  // Interrupt 80 Priority Mask
658 #define NVIC_PRI20_INTD_S       29
659 #define NVIC_PRI20_INTC_S       21
660 #define NVIC_PRI20_INTB_S       13
661 #define NVIC_PRI20_INTA_S       5
662 
663 //*****************************************************************************
664 //
665 // The following are defines for the bit fields in the NVIC_PRI21 register.
666 //
667 //*****************************************************************************
668 #define NVIC_PRI21_INTD_M       0xE0000000  // Interrupt 87 Priority Mask
669 #define NVIC_PRI21_INTC_M       0x00E00000  // Interrupt 86 Priority Mask
670 #define NVIC_PRI21_INTB_M       0x0000E000  // Interrupt 85 Priority Mask
671 #define NVIC_PRI21_INTA_M       0x000000E0  // Interrupt 84 Priority Mask
672 #define NVIC_PRI21_INTD_S       29
673 #define NVIC_PRI21_INTC_S       21
674 #define NVIC_PRI21_INTB_S       13
675 #define NVIC_PRI21_INTA_S       5
676 
677 //*****************************************************************************
678 //
679 // The following are defines for the bit fields in the NVIC_PRI22 register.
680 //
681 //*****************************************************************************
682 #define NVIC_PRI22_INTD_M       0xE0000000  // Interrupt 91 Priority Mask
683 #define NVIC_PRI22_INTC_M       0x00E00000  // Interrupt 90 Priority Mask
684 #define NVIC_PRI22_INTB_M       0x0000E000  // Interrupt 89 Priority Mask
685 #define NVIC_PRI22_INTA_M       0x000000E0  // Interrupt 88 Priority Mask
686 #define NVIC_PRI22_INTD_S       29
687 #define NVIC_PRI22_INTC_S       21
688 #define NVIC_PRI22_INTB_S       13
689 #define NVIC_PRI22_INTA_S       5
690 
691 //*****************************************************************************
692 //
693 // The following are defines for the bit fields in the NVIC_PRI23 register.
694 //
695 //*****************************************************************************
696 #define NVIC_PRI23_INTD_M       0xE0000000  // Interrupt 95 Priority Mask
697 #define NVIC_PRI23_INTC_M       0x00E00000  // Interrupt 94 Priority Mask
698 #define NVIC_PRI23_INTB_M       0x0000E000  // Interrupt 93 Priority Mask
699 #define NVIC_PRI23_INTA_M       0x000000E0  // Interrupt 92 Priority Mask
700 #define NVIC_PRI23_INTD_S       29
701 #define NVIC_PRI23_INTC_S       21
702 #define NVIC_PRI23_INTB_S       13
703 #define NVIC_PRI23_INTA_S       5
704 
705 //*****************************************************************************
706 //
707 // The following are defines for the bit fields in the NVIC_PRI24 register.
708 //
709 //*****************************************************************************
710 #define NVIC_PRI24_INTD_M       0xE0000000  // Interrupt 99 Priority Mask
711 #define NVIC_PRI24_INTC_M       0x00E00000  // Interrupt 98 Priority Mask
712 #define NVIC_PRI24_INTB_M       0x0000E000  // Interrupt 97 Priority Mask
713 #define NVIC_PRI24_INTA_M       0x000000E0  // Interrupt 96 Priority Mask
714 #define NVIC_PRI24_INTD_S       29
715 #define NVIC_PRI24_INTC_S       21
716 #define NVIC_PRI24_INTB_S       13
717 #define NVIC_PRI24_INTA_S       5
718 
719 //*****************************************************************************
720 //
721 // The following are defines for the bit fields in the NVIC_PRI25 register.
722 //
723 //*****************************************************************************
724 #define NVIC_PRI25_INTD_M       0xE0000000  // Interrupt 103 Priority Mask
725 #define NVIC_PRI25_INTC_M       0x00E00000  // Interrupt 102 Priority Mask
726 #define NVIC_PRI25_INTB_M       0x0000E000  // Interrupt 101 Priority Mask
727 #define NVIC_PRI25_INTA_M       0x000000E0  // Interrupt 100 Priority Mask
728 #define NVIC_PRI25_INTD_S       29
729 #define NVIC_PRI25_INTC_S       21
730 #define NVIC_PRI25_INTB_S       13
731 #define NVIC_PRI25_INTA_S       5
732 
733 //*****************************************************************************
734 //
735 // The following are defines for the bit fields in the NVIC_PRI26 register.
736 //
737 //*****************************************************************************
738 #define NVIC_PRI26_INTD_M       0xE0000000  // Interrupt 107 Priority Mask
739 #define NVIC_PRI26_INTC_M       0x00E00000  // Interrupt 106 Priority Mask
740 #define NVIC_PRI26_INTB_M       0x0000E000  // Interrupt 105 Priority Mask
741 #define NVIC_PRI26_INTA_M       0x000000E0  // Interrupt 104 Priority Mask
742 #define NVIC_PRI26_INTD_S       29
743 #define NVIC_PRI26_INTC_S       21
744 #define NVIC_PRI26_INTB_S       13
745 #define NVIC_PRI26_INTA_S       5
746 
747 //*****************************************************************************
748 //
749 // The following are defines for the bit fields in the NVIC_PRI27 register.
750 //
751 //*****************************************************************************
752 #define NVIC_PRI27_INTD_M       0xE0000000  // Interrupt 111 Priority Mask
753 #define NVIC_PRI27_INTC_M       0x00E00000  // Interrupt 110 Priority Mask
754 #define NVIC_PRI27_INTB_M       0x0000E000  // Interrupt 109 Priority Mask
755 #define NVIC_PRI27_INTA_M       0x000000E0  // Interrupt 108 Priority Mask
756 #define NVIC_PRI27_INTD_S       29
757 #define NVIC_PRI27_INTC_S       21
758 #define NVIC_PRI27_INTB_S       13
759 #define NVIC_PRI27_INTA_S       5
760 
761 //*****************************************************************************
762 //
763 // The following are defines for the bit fields in the NVIC_PRI28 register.
764 //
765 //*****************************************************************************
766 #define NVIC_PRI28_INTD_M       0xE0000000  // Interrupt 115 Priority Mask
767 #define NVIC_PRI28_INTC_M       0x00E00000  // Interrupt 114 Priority Mask
768 #define NVIC_PRI28_INTB_M       0x0000E000  // Interrupt 113 Priority Mask
769 #define NVIC_PRI28_INTA_M       0x000000E0  // Interrupt 112 Priority Mask
770 #define NVIC_PRI28_INTD_S       29
771 #define NVIC_PRI28_INTC_S       21
772 #define NVIC_PRI28_INTB_S       13
773 #define NVIC_PRI28_INTA_S       5
774 
775 //*****************************************************************************
776 //
777 // The following are defines for the bit fields in the NVIC_PRI29 register.
778 //
779 //*****************************************************************************
780 #define NVIC_PRI29_INTD_M       0xE0000000  // Interrupt 119 Priority Mask
781 #define NVIC_PRI29_INTC_M       0x00E00000  // Interrupt 118 Priority Mask
782 #define NVIC_PRI29_INTB_M       0x0000E000  // Interrupt 117 Priority Mask
783 #define NVIC_PRI29_INTA_M       0x000000E0  // Interrupt 116 Priority Mask
784 #define NVIC_PRI29_INTD_S       29
785 #define NVIC_PRI29_INTC_S       21
786 #define NVIC_PRI29_INTB_S       13
787 #define NVIC_PRI29_INTA_S       5
788 
789 //*****************************************************************************
790 //
791 // The following are defines for the bit fields in the NVIC_PRI30 register.
792 //
793 //*****************************************************************************
794 #define NVIC_PRI30_INTD_M       0xE0000000  // Interrupt 123 Priority Mask
795 #define NVIC_PRI30_INTC_M       0x00E00000  // Interrupt 122 Priority Mask
796 #define NVIC_PRI30_INTB_M       0x0000E000  // Interrupt 121 Priority Mask
797 #define NVIC_PRI30_INTA_M       0x000000E0  // Interrupt 120 Priority Mask
798 #define NVIC_PRI30_INTD_S       29
799 #define NVIC_PRI30_INTC_S       21
800 #define NVIC_PRI30_INTB_S       13
801 #define NVIC_PRI30_INTA_S       5
802 
803 //*****************************************************************************
804 //
805 // The following are defines for the bit fields in the NVIC_PRI31 register.
806 //
807 //*****************************************************************************
808 #define NVIC_PRI31_INTD_M       0xE0000000  // Interrupt 127 Priority Mask
809 #define NVIC_PRI31_INTC_M       0x00E00000  // Interrupt 126 Priority Mask
810 #define NVIC_PRI31_INTB_M       0x0000E000  // Interrupt 125 Priority Mask
811 #define NVIC_PRI31_INTA_M       0x000000E0  // Interrupt 124 Priority Mask
812 #define NVIC_PRI31_INTD_S       29
813 #define NVIC_PRI31_INTC_S       21
814 #define NVIC_PRI31_INTB_S       13
815 #define NVIC_PRI31_INTA_S       5
816 
817 //*****************************************************************************
818 //
819 // The following are defines for the bit fields in the NVIC_PRI32 register.
820 //
821 //*****************************************************************************
822 #define NVIC_PRI32_INTD_M       0xE0000000  // Interrupt 131 Priority Mask
823 #define NVIC_PRI32_INTC_M       0x00E00000  // Interrupt 130 Priority Mask
824 #define NVIC_PRI32_INTB_M       0x0000E000  // Interrupt 129 Priority Mask
825 #define NVIC_PRI32_INTA_M       0x000000E0  // Interrupt 128 Priority Mask
826 #define NVIC_PRI32_INTD_S       29
827 #define NVIC_PRI32_INTC_S       21
828 #define NVIC_PRI32_INTB_S       13
829 #define NVIC_PRI32_INTA_S       5
830 
831 //*****************************************************************************
832 //
833 // The following are defines for the bit fields in the NVIC_PRI33 register.
834 //
835 //*****************************************************************************
836 #define NVIC_PRI33_INTD_M       0xE0000000  // Interrupt Priority for Interrupt
837                                             // [4n+3]
838 #define NVIC_PRI33_INTC_M       0x00E00000  // Interrupt Priority for Interrupt
839                                             // [4n+2]
840 #define NVIC_PRI33_INTB_M       0x0000E000  // Interrupt Priority for Interrupt
841                                             // [4n+1]
842 #define NVIC_PRI33_INTA_M       0x000000E0  // Interrupt Priority for Interrupt
843                                             // [4n]
844 #define NVIC_PRI33_INTD_S       29
845 #define NVIC_PRI33_INTC_S       21
846 #define NVIC_PRI33_INTB_S       13
847 #define NVIC_PRI33_INTA_S       5
848 
849 //*****************************************************************************
850 //
851 // The following are defines for the bit fields in the NVIC_PRI34 register.
852 //
853 //*****************************************************************************
854 #define NVIC_PRI34_INTD_M       0xE0000000  // Interrupt Priority for Interrupt
855                                             // [4n+3]
856 #define NVIC_PRI34_INTC_M       0x00E00000  // Interrupt Priority for Interrupt
857                                             // [4n+2]
858 #define NVIC_PRI34_INTB_M       0x0000E000  // Interrupt Priority for Interrupt
859                                             // [4n+1]
860 #define NVIC_PRI34_INTA_M       0x000000E0  // Interrupt Priority for Interrupt
861                                             // [4n]
862 #define NVIC_PRI34_INTD_S       29
863 #define NVIC_PRI34_INTC_S       21
864 #define NVIC_PRI34_INTB_S       13
865 #define NVIC_PRI34_INTA_S       5
866 
867 //*****************************************************************************
868 //
869 // The following are defines for the bit fields in the NVIC_CPUID register.
870 //
871 //*****************************************************************************
872 #define NVIC_CPUID_IMP_M        0xFF000000  // Implementer Code
873 #define NVIC_CPUID_IMP_ARM      0x41000000  // ARM
874 #define NVIC_CPUID_VAR_M        0x00F00000  // Variant Number
875 #define NVIC_CPUID_CON_M        0x000F0000  // Constant
876 #define NVIC_CPUID_PARTNO_M     0x0000FFF0  // Part Number
877 #define NVIC_CPUID_PARTNO_CM4   0x0000C240  // Cortex-M4 processor
878 #define NVIC_CPUID_REV_M        0x0000000F  // Revision Number
879 
880 //*****************************************************************************
881 //
882 // The following are defines for the bit fields in the NVIC_INT_CTRL register.
883 //
884 //*****************************************************************************
885 #define NVIC_INT_CTRL_NMI_SET   0x80000000  // NMI Set Pending
886 #define NVIC_INT_CTRL_PEND_SV   0x10000000  // PendSV Set Pending
887 #define NVIC_INT_CTRL_UNPEND_SV 0x08000000  // PendSV Clear Pending
888 #define NVIC_INT_CTRL_PENDSTSET 0x04000000  // SysTick Set Pending
889 #define NVIC_INT_CTRL_PENDSTCLR 0x02000000  // SysTick Clear Pending
890 #define NVIC_INT_CTRL_ISR_PRE   0x00800000  // Debug Interrupt Handling
891 #define NVIC_INT_CTRL_ISR_PEND  0x00400000  // Interrupt Pending
892 #define NVIC_INT_CTRL_VEC_PEN_M 0x000FF000  // Interrupt Pending Vector Number
893 #define NVIC_INT_CTRL_VEC_PEN_NMI                                             \
894                                 0x00002000  // NMI
895 #define NVIC_INT_CTRL_VEC_PEN_HARD                                            \
896                                 0x00003000  // Hard fault
897 #define NVIC_INT_CTRL_VEC_PEN_MEM                                             \
898                                 0x00004000  // Memory management fault
899 #define NVIC_INT_CTRL_VEC_PEN_BUS                                             \
900                                 0x00005000  // Bus fault
901 #define NVIC_INT_CTRL_VEC_PEN_USG                                             \
902                                 0x00006000  // Usage fault
903 #define NVIC_INT_CTRL_VEC_PEN_SVC                                             \
904                                 0x0000B000  // SVCall
905 #define NVIC_INT_CTRL_VEC_PEN_PNDSV                                           \
906                                 0x0000E000  // PendSV
907 #define NVIC_INT_CTRL_VEC_PEN_TICK                                            \
908                                 0x0000F000  // SysTick
909 #define NVIC_INT_CTRL_RET_BASE  0x00000800  // Return to Base
910 #define NVIC_INT_CTRL_VEC_ACT_M 0x000000FF  // Interrupt Pending Vector Number
911 #define NVIC_INT_CTRL_VEC_ACT_S 0
912 
913 //*****************************************************************************
914 //
915 // The following are defines for the bit fields in the NVIC_VTABLE register.
916 //
917 //*****************************************************************************
918 #define NVIC_VTABLE_OFFSET_M    0xFFFFFC00  // Vector Table Offset
919 #define NVIC_VTABLE_OFFSET_S    10
920 
921 //*****************************************************************************
922 //
923 // The following are defines for the bit fields in the NVIC_APINT register.
924 //
925 //*****************************************************************************
926 #define NVIC_APINT_VECTKEY_M    0xFFFF0000  // Register Key
927 #define NVIC_APINT_VECTKEY      0x05FA0000  // Vector key
928 #define NVIC_APINT_ENDIANESS    0x00008000  // Data Endianess
929 #define NVIC_APINT_PRIGROUP_M   0x00000700  // Interrupt Priority Grouping
930 #define NVIC_APINT_PRIGROUP_7_1 0x00000000  // Priority group 7.1 split
931 #define NVIC_APINT_PRIGROUP_6_2 0x00000100  // Priority group 6.2 split
932 #define NVIC_APINT_PRIGROUP_5_3 0x00000200  // Priority group 5.3 split
933 #define NVIC_APINT_PRIGROUP_4_4 0x00000300  // Priority group 4.4 split
934 #define NVIC_APINT_PRIGROUP_3_5 0x00000400  // Priority group 3.5 split
935 #define NVIC_APINT_PRIGROUP_2_6 0x00000500  // Priority group 2.6 split
936 #define NVIC_APINT_PRIGROUP_1_7 0x00000600  // Priority group 1.7 split
937 #define NVIC_APINT_PRIGROUP_0_8 0x00000700  // Priority group 0.8 split
938 #define NVIC_APINT_SYSRESETREQ  0x00000004  // System Reset Request
939 #define NVIC_APINT_VECT_CLR_ACT 0x00000002  // Clear Active NMI / Fault
940 #define NVIC_APINT_VECT_RESET   0x00000001  // System Reset
941 
942 //*****************************************************************************
943 //
944 // The following are defines for the bit fields in the NVIC_SYS_CTRL register.
945 //
946 //*****************************************************************************
947 #define NVIC_SYS_CTRL_SEVONPEND 0x00000010  // Wake Up on Pending
948 #define NVIC_SYS_CTRL_SLEEPDEEP 0x00000004  // Deep Sleep Enable
949 #define NVIC_SYS_CTRL_SLEEPEXIT 0x00000002  // Sleep on ISR Exit
950 
951 //*****************************************************************************
952 //
953 // The following are defines for the bit fields in the NVIC_CFG_CTRL register.
954 //
955 //*****************************************************************************
956 #define NVIC_CFG_CTRL_STKALIGN  0x00000200  // Stack Alignment on Exception
957                                             // Entry
958 #define NVIC_CFG_CTRL_BFHFNMIGN 0x00000100  // Ignore Bus Fault in NMI and
959                                             // Fault
960 #define NVIC_CFG_CTRL_DIV0      0x00000010  // Trap on Divide by 0
961 #define NVIC_CFG_CTRL_UNALIGNED 0x00000008  // Trap on Unaligned Access
962 #define NVIC_CFG_CTRL_MAIN_PEND 0x00000002  // Allow Main Interrupt Trigger
963 #define NVIC_CFG_CTRL_BASE_THR  0x00000001  // Thread State Control
964 
965 //*****************************************************************************
966 //
967 // The following are defines for the bit fields in the NVIC_SYS_PRI1 register.
968 //
969 //*****************************************************************************
970 #define NVIC_SYS_PRI1_USAGE_M   0x00E00000  // Usage Fault Priority
971 #define NVIC_SYS_PRI1_BUS_M     0x0000E000  // Bus Fault Priority
972 #define NVIC_SYS_PRI1_MEM_M     0x000000E0  // Memory Management Fault Priority
973 #define NVIC_SYS_PRI1_USAGE_S   21
974 #define NVIC_SYS_PRI1_BUS_S     13
975 #define NVIC_SYS_PRI1_MEM_S     5
976 
977 //*****************************************************************************
978 //
979 // The following are defines for the bit fields in the NVIC_SYS_PRI2 register.
980 //
981 //*****************************************************************************
982 #define NVIC_SYS_PRI2_SVC_M     0xE0000000  // SVCall Priority
983 #define NVIC_SYS_PRI2_SVC_S     29
984 
985 //*****************************************************************************
986 //
987 // The following are defines for the bit fields in the NVIC_SYS_PRI3 register.
988 //
989 //*****************************************************************************
990 #define NVIC_SYS_PRI3_TICK_M    0xE0000000  // SysTick Exception Priority
991 #define NVIC_SYS_PRI3_PENDSV_M  0x00E00000  // PendSV Priority
992 #define NVIC_SYS_PRI3_DEBUG_M   0x000000E0  // Debug Priority
993 #define NVIC_SYS_PRI3_TICK_S    29
994 #define NVIC_SYS_PRI3_PENDSV_S  21
995 #define NVIC_SYS_PRI3_DEBUG_S   5
996 
997 //*****************************************************************************
998 //
999 // The following are defines for the bit fields in the NVIC_SYS_HND_CTRL
1000 // register.
1001 //
1002 //*****************************************************************************
1003 #define NVIC_SYS_HND_CTRL_USAGE 0x00040000  // Usage Fault Enable
1004 #define NVIC_SYS_HND_CTRL_BUS   0x00020000  // Bus Fault Enable
1005 #define NVIC_SYS_HND_CTRL_MEM   0x00010000  // Memory Management Fault Enable
1006 #define NVIC_SYS_HND_CTRL_SVC   0x00008000  // SVC Call Pending
1007 #define NVIC_SYS_HND_CTRL_BUSP  0x00004000  // Bus Fault Pending
1008 #define NVIC_SYS_HND_CTRL_MEMP  0x00002000  // Memory Management Fault Pending
1009 #define NVIC_SYS_HND_CTRL_USAGEP                                              \
1010                                 0x00001000  // Usage Fault Pending
1011 #define NVIC_SYS_HND_CTRL_TICK  0x00000800  // SysTick Exception Active
1012 #define NVIC_SYS_HND_CTRL_PNDSV 0x00000400  // PendSV Exception Active
1013 #define NVIC_SYS_HND_CTRL_MON   0x00000100  // Debug Monitor Active
1014 #define NVIC_SYS_HND_CTRL_SVCA  0x00000080  // SVC Call Active
1015 #define NVIC_SYS_HND_CTRL_USGA  0x00000008  // Usage Fault Active
1016 #define NVIC_SYS_HND_CTRL_BUSA  0x00000002  // Bus Fault Active
1017 #define NVIC_SYS_HND_CTRL_MEMA  0x00000001  // Memory Management Fault Active
1018 
1019 //*****************************************************************************
1020 //
1021 // The following are defines for the bit fields in the NVIC_FAULT_STAT
1022 // register.
1023 //
1024 //*****************************************************************************
1025 #define NVIC_FAULT_STAT_DIV0    0x02000000  // Divide-by-Zero Usage Fault
1026 #define NVIC_FAULT_STAT_UNALIGN 0x01000000  // Unaligned Access Usage Fault
1027 #define NVIC_FAULT_STAT_NOCP    0x00080000  // No Coprocessor Usage Fault
1028 #define NVIC_FAULT_STAT_INVPC   0x00040000  // Invalid PC Load Usage Fault
1029 #define NVIC_FAULT_STAT_INVSTAT 0x00020000  // Invalid State Usage Fault
1030 #define NVIC_FAULT_STAT_UNDEF   0x00010000  // Undefined Instruction Usage
1031                                             // Fault
1032 #define NVIC_FAULT_STAT_BFARV   0x00008000  // Bus Fault Address Register Valid
1033 #define NVIC_FAULT_STAT_BLSPERR 0x00002000  // Bus Fault on Floating-Point Lazy
1034                                             // State Preservation
1035 #define NVIC_FAULT_STAT_BSTKE   0x00001000  // Stack Bus Fault
1036 #define NVIC_FAULT_STAT_BUSTKE  0x00000800  // Unstack Bus Fault
1037 #define NVIC_FAULT_STAT_IMPRE   0x00000400  // Imprecise Data Bus Error
1038 #define NVIC_FAULT_STAT_PRECISE 0x00000200  // Precise Data Bus Error
1039 #define NVIC_FAULT_STAT_IBUS    0x00000100  // Instruction Bus Error
1040 #define NVIC_FAULT_STAT_MMARV   0x00000080  // Memory Management Fault Address
1041                                             // Register Valid
1042 #define NVIC_FAULT_STAT_MLSPERR 0x00000020  // Memory Management Fault on
1043                                             // Floating-Point Lazy State
1044                                             // Preservation
1045 #define NVIC_FAULT_STAT_MSTKE   0x00000010  // Stack Access Violation
1046 #define NVIC_FAULT_STAT_MUSTKE  0x00000008  // Unstack Access Violation
1047 #define NVIC_FAULT_STAT_DERR    0x00000002  // Data Access Violation
1048 #define NVIC_FAULT_STAT_IERR    0x00000001  // Instruction Access Violation
1049 
1050 //*****************************************************************************
1051 //
1052 // The following are defines for the bit fields in the NVIC_HFAULT_STAT
1053 // register.
1054 //
1055 //*****************************************************************************
1056 #define NVIC_HFAULT_STAT_DBG    0x80000000  // Debug Event
1057 #define NVIC_HFAULT_STAT_FORCED 0x40000000  // Forced Hard Fault
1058 #define NVIC_HFAULT_STAT_VECT   0x00000002  // Vector Table Read Fault
1059 
1060 //*****************************************************************************
1061 //
1062 // The following are defines for the bit fields in the NVIC_DEBUG_STAT
1063 // register.
1064 //
1065 //*****************************************************************************
1066 #define NVIC_DEBUG_STAT_EXTRNL  0x00000010  // EDBGRQ asserted
1067 #define NVIC_DEBUG_STAT_VCATCH  0x00000008  // Vector catch
1068 #define NVIC_DEBUG_STAT_DWTTRAP 0x00000004  // DWT match
1069 #define NVIC_DEBUG_STAT_BKPT    0x00000002  // Breakpoint instruction
1070 #define NVIC_DEBUG_STAT_HALTED  0x00000001  // Halt request
1071 
1072 //*****************************************************************************
1073 //
1074 // The following are defines for the bit fields in the NVIC_MM_ADDR register.
1075 //
1076 //*****************************************************************************
1077 #define NVIC_MM_ADDR_M          0xFFFFFFFF  // Fault Address
1078 #define NVIC_MM_ADDR_S          0
1079 
1080 //*****************************************************************************
1081 //
1082 // The following are defines for the bit fields in the NVIC_FAULT_ADDR
1083 // register.
1084 //
1085 //*****************************************************************************
1086 #define NVIC_FAULT_ADDR_M       0xFFFFFFFF  // Fault Address
1087 #define NVIC_FAULT_ADDR_S       0
1088 
1089 //*****************************************************************************
1090 //
1091 // The following are defines for the bit fields in the NVIC_CPAC register.
1092 //
1093 //*****************************************************************************
1094 #define NVIC_CPAC_CP11_M        0x00C00000  // CP11 Coprocessor Access
1095                                             // Privilege
1096 #define NVIC_CPAC_CP11_DIS      0x00000000  // Access Denied
1097 #define NVIC_CPAC_CP11_PRIV     0x00400000  // Privileged Access Only
1098 #define NVIC_CPAC_CP11_FULL     0x00C00000  // Full Access
1099 #define NVIC_CPAC_CP10_M        0x00300000  // CP10 Coprocessor Access
1100                                             // Privilege
1101 #define NVIC_CPAC_CP10_DIS      0x00000000  // Access Denied
1102 #define NVIC_CPAC_CP10_PRIV     0x00100000  // Privileged Access Only
1103 #define NVIC_CPAC_CP10_FULL     0x00300000  // Full Access
1104 
1105 //*****************************************************************************
1106 //
1107 // The following are defines for the bit fields in the NVIC_MPU_TYPE register.
1108 //
1109 //*****************************************************************************
1110 #define NVIC_MPU_TYPE_IREGION_M 0x00FF0000  // Number of I Regions
1111 #define NVIC_MPU_TYPE_DREGION_M 0x0000FF00  // Number of D Regions
1112 #define NVIC_MPU_TYPE_SEPARATE  0x00000001  // Separate or Unified MPU
1113 #define NVIC_MPU_TYPE_IREGION_S 16
1114 #define NVIC_MPU_TYPE_DREGION_S 8
1115 
1116 //*****************************************************************************
1117 //
1118 // The following are defines for the bit fields in the NVIC_MPU_CTRL register.
1119 //
1120 //*****************************************************************************
1121 #define NVIC_MPU_CTRL_PRIVDEFEN 0x00000004  // MPU Default Region
1122 #define NVIC_MPU_CTRL_HFNMIENA  0x00000002  // MPU Enabled During Faults
1123 #define NVIC_MPU_CTRL_ENABLE    0x00000001  // MPU Enable
1124 
1125 //*****************************************************************************
1126 //
1127 // The following are defines for the bit fields in the NVIC_MPU_NUMBER
1128 // register.
1129 //
1130 //*****************************************************************************
1131 #define NVIC_MPU_NUMBER_M       0x00000007  // MPU Region to Access
1132 #define NVIC_MPU_NUMBER_S       0
1133 
1134 //*****************************************************************************
1135 //
1136 // The following are defines for the bit fields in the NVIC_MPU_BASE register.
1137 //
1138 //*****************************************************************************
1139 #define NVIC_MPU_BASE_ADDR_M    0xFFFFFFE0  // Base Address Mask
1140 #define NVIC_MPU_BASE_VALID     0x00000010  // Region Number Valid
1141 #define NVIC_MPU_BASE_REGION_M  0x00000007  // Region Number
1142 #define NVIC_MPU_BASE_ADDR_S    5
1143 #define NVIC_MPU_BASE_REGION_S  0
1144 
1145 //*****************************************************************************
1146 //
1147 // The following are defines for the bit fields in the NVIC_MPU_ATTR register.
1148 //
1149 //*****************************************************************************
1150 #define NVIC_MPU_ATTR_XN        0x10000000  // Instruction Access Disable
1151 #define NVIC_MPU_ATTR_AP_M      0x07000000  // Access Privilege
1152 #define NVIC_MPU_ATTR_AP_NO_NO  0x00000000  // prv: no access, usr: no access
1153 #define NVIC_MPU_ATTR_AP_RW_NO  0x01000000  // prv: rw, usr: none
1154 #define NVIC_MPU_ATTR_AP_RW_RO  0x02000000  // prv: rw, usr: read-only
1155 #define NVIC_MPU_ATTR_AP_RW_RW  0x03000000  // prv: rw, usr: rw
1156 #define NVIC_MPU_ATTR_AP_RO_NO  0x05000000  // prv: ro, usr: none
1157 #define NVIC_MPU_ATTR_AP_RO_RO  0x06000000  // prv: ro, usr: ro
1158 #define NVIC_MPU_ATTR_TEX_M     0x00380000  // Type Extension Mask
1159 #define NVIC_MPU_ATTR_SHAREABLE 0x00040000  // Shareable
1160 #define NVIC_MPU_ATTR_CACHEABLE 0x00020000  // Cacheable
1161 #define NVIC_MPU_ATTR_BUFFRABLE 0x00010000  // Bufferable
1162 #define NVIC_MPU_ATTR_SRD_M     0x0000FF00  // Subregion Disable Bits
1163 #define NVIC_MPU_ATTR_SRD_0     0x00000100  // Sub-region 0 disable
1164 #define NVIC_MPU_ATTR_SRD_1     0x00000200  // Sub-region 1 disable
1165 #define NVIC_MPU_ATTR_SRD_2     0x00000400  // Sub-region 2 disable
1166 #define NVIC_MPU_ATTR_SRD_3     0x00000800  // Sub-region 3 disable
1167 #define NVIC_MPU_ATTR_SRD_4     0x00001000  // Sub-region 4 disable
1168 #define NVIC_MPU_ATTR_SRD_5     0x00002000  // Sub-region 5 disable
1169 #define NVIC_MPU_ATTR_SRD_6     0x00004000  // Sub-region 6 disable
1170 #define NVIC_MPU_ATTR_SRD_7     0x00008000  // Sub-region 7 disable
1171 #define NVIC_MPU_ATTR_SIZE_M    0x0000003E  // Region Size Mask
1172 #define NVIC_MPU_ATTR_SIZE_32B  0x00000008  // Region size 32 bytes
1173 #define NVIC_MPU_ATTR_SIZE_64B  0x0000000A  // Region size 64 bytes
1174 #define NVIC_MPU_ATTR_SIZE_128B 0x0000000C  // Region size 128 bytes
1175 #define NVIC_MPU_ATTR_SIZE_256B 0x0000000E  // Region size 256 bytes
1176 #define NVIC_MPU_ATTR_SIZE_512B 0x00000010  // Region size 512 bytes
1177 #define NVIC_MPU_ATTR_SIZE_1K   0x00000012  // Region size 1 Kbytes
1178 #define NVIC_MPU_ATTR_SIZE_2K   0x00000014  // Region size 2 Kbytes
1179 #define NVIC_MPU_ATTR_SIZE_4K   0x00000016  // Region size 4 Kbytes
1180 #define NVIC_MPU_ATTR_SIZE_8K   0x00000018  // Region size 8 Kbytes
1181 #define NVIC_MPU_ATTR_SIZE_16K  0x0000001A  // Region size 16 Kbytes
1182 #define NVIC_MPU_ATTR_SIZE_32K  0x0000001C  // Region size 32 Kbytes
1183 #define NVIC_MPU_ATTR_SIZE_64K  0x0000001E  // Region size 64 Kbytes
1184 #define NVIC_MPU_ATTR_SIZE_128K 0x00000020  // Region size 128 Kbytes
1185 #define NVIC_MPU_ATTR_SIZE_256K 0x00000022  // Region size 256 Kbytes
1186 #define NVIC_MPU_ATTR_SIZE_512K 0x00000024  // Region size 512 Kbytes
1187 #define NVIC_MPU_ATTR_SIZE_1M   0x00000026  // Region size 1 Mbytes
1188 #define NVIC_MPU_ATTR_SIZE_2M   0x00000028  // Region size 2 Mbytes
1189 #define NVIC_MPU_ATTR_SIZE_4M   0x0000002A  // Region size 4 Mbytes
1190 #define NVIC_MPU_ATTR_SIZE_8M   0x0000002C  // Region size 8 Mbytes
1191 #define NVIC_MPU_ATTR_SIZE_16M  0x0000002E  // Region size 16 Mbytes
1192 #define NVIC_MPU_ATTR_SIZE_32M  0x00000030  // Region size 32 Mbytes
1193 #define NVIC_MPU_ATTR_SIZE_64M  0x00000032  // Region size 64 Mbytes
1194 #define NVIC_MPU_ATTR_SIZE_128M 0x00000034  // Region size 128 Mbytes
1195 #define NVIC_MPU_ATTR_SIZE_256M 0x00000036  // Region size 256 Mbytes
1196 #define NVIC_MPU_ATTR_SIZE_512M 0x00000038  // Region size 512 Mbytes
1197 #define NVIC_MPU_ATTR_SIZE_1G   0x0000003A  // Region size 1 Gbytes
1198 #define NVIC_MPU_ATTR_SIZE_2G   0x0000003C  // Region size 2 Gbytes
1199 #define NVIC_MPU_ATTR_SIZE_4G   0x0000003E  // Region size 4 Gbytes
1200 #define NVIC_MPU_ATTR_ENABLE    0x00000001  // Region Enable
1201 
1202 //*****************************************************************************
1203 //
1204 // The following are defines for the bit fields in the NVIC_MPU_BASE1 register.
1205 //
1206 //*****************************************************************************
1207 #define NVIC_MPU_BASE1_ADDR_M   0xFFFFFFE0  // Base Address Mask
1208 #define NVIC_MPU_BASE1_VALID    0x00000010  // Region Number Valid
1209 #define NVIC_MPU_BASE1_REGION_M 0x00000007  // Region Number
1210 #define NVIC_MPU_BASE1_ADDR_S   5
1211 #define NVIC_MPU_BASE1_REGION_S 0
1212 
1213 //*****************************************************************************
1214 //
1215 // The following are defines for the bit fields in the NVIC_MPU_ATTR1 register.
1216 //
1217 //*****************************************************************************
1218 #define NVIC_MPU_ATTR1_XN       0x10000000  // Instruction Access Disable
1219 #define NVIC_MPU_ATTR1_AP_M     0x07000000  // Access Privilege
1220 #define NVIC_MPU_ATTR1_TEX_M    0x00380000  // Type Extension Mask
1221 #define NVIC_MPU_ATTR1_SHAREABLE                                              \
1222                                 0x00040000  // Shareable
1223 #define NVIC_MPU_ATTR1_CACHEABLE                                              \
1224                                 0x00020000  // Cacheable
1225 #define NVIC_MPU_ATTR1_BUFFRABLE                                              \
1226                                 0x00010000  // Bufferable
1227 #define NVIC_MPU_ATTR1_SRD_M    0x0000FF00  // Subregion Disable Bits
1228 #define NVIC_MPU_ATTR1_SIZE_M   0x0000003E  // Region Size Mask
1229 #define NVIC_MPU_ATTR1_ENABLE   0x00000001  // Region Enable
1230 
1231 //*****************************************************************************
1232 //
1233 // The following are defines for the bit fields in the NVIC_MPU_BASE2 register.
1234 //
1235 //*****************************************************************************
1236 #define NVIC_MPU_BASE2_ADDR_M   0xFFFFFFE0  // Base Address Mask
1237 #define NVIC_MPU_BASE2_VALID    0x00000010  // Region Number Valid
1238 #define NVIC_MPU_BASE2_REGION_M 0x00000007  // Region Number
1239 #define NVIC_MPU_BASE2_ADDR_S   5
1240 #define NVIC_MPU_BASE2_REGION_S 0
1241 
1242 //*****************************************************************************
1243 //
1244 // The following are defines for the bit fields in the NVIC_MPU_ATTR2 register.
1245 //
1246 //*****************************************************************************
1247 #define NVIC_MPU_ATTR2_XN       0x10000000  // Instruction Access Disable
1248 #define NVIC_MPU_ATTR2_AP_M     0x07000000  // Access Privilege
1249 #define NVIC_MPU_ATTR2_TEX_M    0x00380000  // Type Extension Mask
1250 #define NVIC_MPU_ATTR2_SHAREABLE                                              \
1251                                 0x00040000  // Shareable
1252 #define NVIC_MPU_ATTR2_CACHEABLE                                              \
1253                                 0x00020000  // Cacheable
1254 #define NVIC_MPU_ATTR2_BUFFRABLE                                              \
1255                                 0x00010000  // Bufferable
1256 #define NVIC_MPU_ATTR2_SRD_M    0x0000FF00  // Subregion Disable Bits
1257 #define NVIC_MPU_ATTR2_SIZE_M   0x0000003E  // Region Size Mask
1258 #define NVIC_MPU_ATTR2_ENABLE   0x00000001  // Region Enable
1259 
1260 //*****************************************************************************
1261 //
1262 // The following are defines for the bit fields in the NVIC_MPU_BASE3 register.
1263 //
1264 //*****************************************************************************
1265 #define NVIC_MPU_BASE3_ADDR_M   0xFFFFFFE0  // Base Address Mask
1266 #define NVIC_MPU_BASE3_VALID    0x00000010  // Region Number Valid
1267 #define NVIC_MPU_BASE3_REGION_M 0x00000007  // Region Number
1268 #define NVIC_MPU_BASE3_ADDR_S   5
1269 #define NVIC_MPU_BASE3_REGION_S 0
1270 
1271 //*****************************************************************************
1272 //
1273 // The following are defines for the bit fields in the NVIC_MPU_ATTR3 register.
1274 //
1275 //*****************************************************************************
1276 #define NVIC_MPU_ATTR3_XN       0x10000000  // Instruction Access Disable
1277 #define NVIC_MPU_ATTR3_AP_M     0x07000000  // Access Privilege
1278 #define NVIC_MPU_ATTR3_TEX_M    0x00380000  // Type Extension Mask
1279 #define NVIC_MPU_ATTR3_SHAREABLE                                              \
1280                                 0x00040000  // Shareable
1281 #define NVIC_MPU_ATTR3_CACHEABLE                                              \
1282                                 0x00020000  // Cacheable
1283 #define NVIC_MPU_ATTR3_BUFFRABLE                                              \
1284                                 0x00010000  // Bufferable
1285 #define NVIC_MPU_ATTR3_SRD_M    0x0000FF00  // Subregion Disable Bits
1286 #define NVIC_MPU_ATTR3_SIZE_M   0x0000003E  // Region Size Mask
1287 #define NVIC_MPU_ATTR3_ENABLE   0x00000001  // Region Enable
1288 
1289 //*****************************************************************************
1290 //
1291 // The following are defines for the bit fields in the NVIC_DBG_CTRL register.
1292 //
1293 //*****************************************************************************
1294 #define NVIC_DBG_CTRL_DBGKEY_M  0xFFFF0000  // Debug key mask
1295 #define NVIC_DBG_CTRL_DBGKEY    0xA05F0000  // Debug key
1296 #define NVIC_DBG_CTRL_S_RESET_ST                                              \
1297                                 0x02000000  // Core has reset since last read
1298 #define NVIC_DBG_CTRL_S_RETIRE_ST                                             \
1299                                 0x01000000  // Core has executed insruction
1300                                             // since last read
1301 #define NVIC_DBG_CTRL_S_LOCKUP  0x00080000  // Core is locked up
1302 #define NVIC_DBG_CTRL_S_SLEEP   0x00040000  // Core is sleeping
1303 #define NVIC_DBG_CTRL_S_HALT    0x00020000  // Core status on halt
1304 #define NVIC_DBG_CTRL_S_REGRDY  0x00010000  // Register read/write available
1305 #define NVIC_DBG_CTRL_C_SNAPSTALL                                             \
1306                                 0x00000020  // Breaks a stalled load/store
1307 #define NVIC_DBG_CTRL_C_MASKINT 0x00000008  // Mask interrupts when stepping
1308 #define NVIC_DBG_CTRL_C_STEP    0x00000004  // Step the core
1309 #define NVIC_DBG_CTRL_C_HALT    0x00000002  // Halt the core
1310 #define NVIC_DBG_CTRL_C_DEBUGEN 0x00000001  // Enable debug
1311 
1312 //*****************************************************************************
1313 //
1314 // The following are defines for the bit fields in the NVIC_DBG_XFER register.
1315 //
1316 //*****************************************************************************
1317 #define NVIC_DBG_XFER_REG_WNR   0x00010000  // Write or not read
1318 #define NVIC_DBG_XFER_REG_SEL_M 0x0000001F  // Register
1319 #define NVIC_DBG_XFER_REG_R0    0x00000000  // Register R0
1320 #define NVIC_DBG_XFER_REG_R1    0x00000001  // Register R1
1321 #define NVIC_DBG_XFER_REG_R2    0x00000002  // Register R2
1322 #define NVIC_DBG_XFER_REG_R3    0x00000003  // Register R3
1323 #define NVIC_DBG_XFER_REG_R4    0x00000004  // Register R4
1324 #define NVIC_DBG_XFER_REG_R5    0x00000005  // Register R5
1325 #define NVIC_DBG_XFER_REG_R6    0x00000006  // Register R6
1326 #define NVIC_DBG_XFER_REG_R7    0x00000007  // Register R7
1327 #define NVIC_DBG_XFER_REG_R8    0x00000008  // Register R8
1328 #define NVIC_DBG_XFER_REG_R9    0x00000009  // Register R9
1329 #define NVIC_DBG_XFER_REG_R10   0x0000000A  // Register R10
1330 #define NVIC_DBG_XFER_REG_R11   0x0000000B  // Register R11
1331 #define NVIC_DBG_XFER_REG_R12   0x0000000C  // Register R12
1332 #define NVIC_DBG_XFER_REG_R13   0x0000000D  // Register R13
1333 #define NVIC_DBG_XFER_REG_R14   0x0000000E  // Register R14
1334 #define NVIC_DBG_XFER_REG_R15   0x0000000F  // Register R15
1335 #define NVIC_DBG_XFER_REG_FLAGS 0x00000010  // xPSR/Flags register
1336 #define NVIC_DBG_XFER_REG_MSP   0x00000011  // Main SP
1337 #define NVIC_DBG_XFER_REG_PSP   0x00000012  // Process SP
1338 #define NVIC_DBG_XFER_REG_DSP   0x00000013  // Deep SP
1339 #define NVIC_DBG_XFER_REG_CFBP  0x00000014  // Control/Fault/BasePri/PriMask
1340 
1341 //*****************************************************************************
1342 //
1343 // The following are defines for the bit fields in the NVIC_DBG_DATA register.
1344 //
1345 //*****************************************************************************
1346 #define NVIC_DBG_DATA_M         0xFFFFFFFF  // Data temporary cache
1347 #define NVIC_DBG_DATA_S         0
1348 
1349 //*****************************************************************************
1350 //
1351 // The following are defines for the bit fields in the NVIC_DBG_INT register.
1352 //
1353 //*****************************************************************************
1354 #define NVIC_DBG_INT_HARDERR    0x00000400  // Debug trap on hard fault
1355 #define NVIC_DBG_INT_INTERR     0x00000200  // Debug trap on interrupt errors
1356 #define NVIC_DBG_INT_BUSERR     0x00000100  // Debug trap on bus error
1357 #define NVIC_DBG_INT_STATERR    0x00000080  // Debug trap on usage fault state
1358 #define NVIC_DBG_INT_CHKERR     0x00000040  // Debug trap on usage fault check
1359 #define NVIC_DBG_INT_NOCPERR    0x00000020  // Debug trap on coprocessor error
1360 #define NVIC_DBG_INT_MMERR      0x00000010  // Debug trap on mem manage fault
1361 #define NVIC_DBG_INT_RESET      0x00000008  // Core reset status
1362 #define NVIC_DBG_INT_RSTPENDCLR 0x00000004  // Clear pending core reset
1363 #define NVIC_DBG_INT_RSTPENDING 0x00000002  // Core reset is pending
1364 #define NVIC_DBG_INT_RSTVCATCH  0x00000001  // Reset vector catch
1365 
1366 //*****************************************************************************
1367 //
1368 // The following are defines for the bit fields in the NVIC_SW_TRIG register.
1369 //
1370 //*****************************************************************************
1371 #define NVIC_SW_TRIG_INTID_M    0x000000FF  // Interrupt ID
1372 #define NVIC_SW_TRIG_INTID_S    0
1373 
1374 //*****************************************************************************
1375 //
1376 // The following are defines for the bit fields in the NVIC_FPCC register.
1377 //
1378 //*****************************************************************************
1379 #define NVIC_FPCC_ASPEN         0x80000000  // Automatic State Preservation
1380                                             // Enable
1381 #define NVIC_FPCC_LSPEN         0x40000000  // Lazy State Preservation Enable
1382 #define NVIC_FPCC_MONRDY        0x00000100  // Monitor Ready
1383 #define NVIC_FPCC_BFRDY         0x00000040  // Bus Fault Ready
1384 #define NVIC_FPCC_MMRDY         0x00000020  // Memory Management Fault Ready
1385 #define NVIC_FPCC_HFRDY         0x00000010  // Hard Fault Ready
1386 #define NVIC_FPCC_THREAD        0x00000008  // Thread Mode
1387 #define NVIC_FPCC_USER          0x00000002  // User Privilege Level
1388 #define NVIC_FPCC_LSPACT        0x00000001  // Lazy State Preservation Active
1389 
1390 //*****************************************************************************
1391 //
1392 // The following are defines for the bit fields in the NVIC_FPCA register.
1393 //
1394 //*****************************************************************************
1395 #define NVIC_FPCA_ADDRESS_M     0xFFFFFFF8  // Address
1396 #define NVIC_FPCA_ADDRESS_S     3
1397 
1398 //*****************************************************************************
1399 //
1400 // The following are defines for the bit fields in the NVIC_FPDSC register.
1401 //
1402 //*****************************************************************************
1403 #define NVIC_FPDSC_AHP          0x04000000  // AHP Bit Default
1404 #define NVIC_FPDSC_DN           0x02000000  // DN Bit Default
1405 #define NVIC_FPDSC_FZ           0x01000000  // FZ Bit Default
1406 #define NVIC_FPDSC_RMODE_M      0x00C00000  // RMODE Bit Default
1407 #define NVIC_FPDSC_RMODE_RN     0x00000000  // Round to Nearest (RN) mode
1408 #define NVIC_FPDSC_RMODE_RP     0x00400000  // Round towards Plus Infinity (RP)
1409                                             // mode
1410 #define NVIC_FPDSC_RMODE_RM     0x00800000  // Round towards Minus Infinity
1411                                             // (RM) mode
1412 #define NVIC_FPDSC_RMODE_RZ     0x00C00000  // Round towards Zero (RZ) mode
1413 
1414 #endif // __HW_NVIC_H__
1415