1 //*****************************************************************************
2 //
3 // Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions
7 // are met:
8 //
9 // Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 //
12 // Redistributions in binary form must reproduce the above copyright
13 // notice, this list of conditions and the following disclaimer in the
14 // documentation and/or other materials provided with the
15 // distribution.
16 //
17 // Neither the name of Texas Instruments Incorporated nor the names of
18 // its contributors may be used to endorse or promote products derived
19 // from this software without specific prior written permission.
20 //
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 //
33 // MSP432 Startup Code and interrupt vectors for IAR Embedded Workbench for ARM
34 //
35 //*****************************************************************************
36
37 #include <stdint.h>
38
39 //*****************************************************************************
40 //
41 // Enable the IAR extensions for this source file.
42 //
43 //*****************************************************************************
44 #pragma language=extended
45 #pragma segment="CSTACK"
46
47 //*****************************************************************************
48 //
49 // Forward declaration of the default fault handlers.
50 //
51 //*****************************************************************************
52 extern void Reset_Handler(void);
53 static void Default_Handler(void);
54
55 extern void NMI_Handler(void);
56 extern void HardFault_Handler(void);
57 extern void MemManage_Handler(void);
58 extern void BusFault_Handler(void);
59 extern void UsageFault_Handler(void);
60 extern void SVC_Handler(void);
61 extern void DebugMon_Handler(void);
62 extern void PendSV_Handler(void);
63 extern void SysTick_Handler(void);
64
65 /* device specific interrupt handler */
66 extern void GPIOA_IRQHandler(void);
67 extern void GPIOB_IRQHandler(void);
68 extern void GPIOC_IRQHandler(void);
69 extern void GPIOD_IRQHandler(void);
70 extern void GPIOE_IRQHandler(void);
71 extern void UART0_IRQHandler(void);
72 extern void UART1_IRQHandler(void);
73 extern void SSI0_IRQHandler(void);
74 extern void I2C0_IRQHandler(void);
75 extern void PWM0_FAULT_IRQHandler(void);
76 extern void PWM0_0_IRQHandler(void);
77 extern void PWM0_1_IRQHandler(void);
78 extern void PWM0_2_IRQHandler(void);
79 extern void QEI0_IRQHandler(void);
80 extern void ADC0SS0_IRQHandler(void);
81 extern void ADC0SS1_IRQHandler(void);
82 extern void ADC0SS2_IRQHandler(void);
83 extern void ADC0SS3_IRQHandler(void);
84 extern void WATCHDOG_IRQHandler(void);
85 extern void TIMER0A_IRQHandler(void);
86 extern void TIMER0B_IRQHandler(void);
87 extern void TIMER1A_IRQHandler(void);
88 extern void TIMER1B_IRQHandler(void);
89 extern void TIMER2A_IRQHandler(void);
90 extern void TIMER2B_IRQHandler(void);
91 extern void COMP0_IRQHandler(void);
92 extern void COMP1_IRQHandler(void);
93 extern void COMP2_IRQHandler(void);
94 extern void SYSCTL_IRQHandler(void);
95 extern void FLASH_IRQHandler(void);
96 extern void GPIOF_IRQHandler(void);
97 extern void GPIOG_IRQHandler(void);
98 extern void GPIOH_IRQHandler(void);
99 extern void UART2_IRQHandler(void);
100 extern void SSI1_IRQHandler(void);
101 extern void TIMER3A_IRQHandler(void);
102 extern void TIMER3B_IRQHandler(void);
103 extern void I2C1_IRQHandler(void);
104 extern void CAN0_IRQHandler(void);
105 extern void CAN1_IRQHandler(void);
106 extern void EMAC0_IRQHandler(void);
107 extern void HIBERNATE_IRQHandler(void);
108 extern void USB0_IRQHandler(void);
109 extern void PWM0_3_IRQHandler(void);
110 extern void UDMA_IRQHandler(void);
111 extern void UDMAERR_IRQHandler(void);
112 extern void ADC1SS0_IRQHandler(void);
113 extern void ADC1SS1_IRQHandler(void);
114 extern void ADC1SS2_IRQHandler(void);
115 extern void ADC1SS3_IRQHandler(void);
116 extern void EPI0_IRQHandler(void);
117 extern void GPIOJ_IRQHandler(void);
118 extern void GPIOK_IRQHandler(void);
119 extern void GPIOL_IRQHandler(void);
120 extern void SSI2_IRQHandler(void);
121 extern void SSI3_IRQHandler(void);
122 extern void UART3_IRQHandler(void);
123 extern void UART4_IRQHandler(void);
124 extern void UART5_IRQHandler(void);
125 extern void UART6_IRQHandler(void);
126 extern void UART7_IRQHandler(void);
127 extern void I2C2_IRQHandler(void);
128 extern void I2C3_IRQHandler(void);
129 extern void TIMER4A_IRQHandler(void);
130 extern void TIMER4B_IRQHandler(void);
131 extern void TIMER5A_IRQHandler(void);
132 extern void TIMER5B_IRQHandler(void);
133 extern void SYSEXC_IRQHandler(void);
134 extern void I2C4_IRQHandler(void);
135 extern void I2C5_IRQHandler(void);
136 extern void GPIOM_IRQHandler(void);
137 extern void GPION_IRQHandler(void);
138 extern void TAMPER0_IRQHandler(void);
139 extern void GPIOP0_IRQHandler(void);
140 extern void GPIOP1_IRQHandler(void);
141 extern void GPIOP2_IRQHandler(void);
142 extern void GPIOP3_IRQHandler(void);
143 extern void GPIOP4_IRQHandler(void);
144 extern void GPIOP5_IRQHandler(void);
145 extern void GPIOP6_IRQHandler(void);
146 extern void GPIOP7_IRQHandler(void);
147 extern void GPIOQ0_IRQHandler(void);
148 extern void GPIOQ1_IRQHandler(void);
149 extern void GPIOQ2_IRQHandler(void);
150 extern void GPIOQ3_IRQHandler(void);
151 extern void GPIOQ4_IRQHandler(void);
152 extern void GPIOQ5_IRQHandler(void);
153 extern void GPIOQ6_IRQHandler(void);
154 extern void GPIOQ7_IRQHandler(void);
155 extern void SHA0_IRQHandler(void);
156 extern void AES0_IRQHandler(void);
157 extern void DES0_IRQHandler(void);
158 extern void TIMER6A_IRQHandler(void);
159 extern void TIMER6B_IRQHandler(void);
160 extern void TIMER7A_IRQHandler(void);
161 extern void TIMER7B_IRQHandler(void);
162 extern void I2C6_IRQHandler(void);
163 extern void I2C7_IRQHandler(void);
164 extern void I2C8_IRQHandler(void);
165 extern void I2C9_IRQHandler(void);
166
167 /* Cortex-M4 Processor Exceptions */
168 #pragma weak NMI_Handler=Default_Handler
169 #pragma weak HardFault_Handler=Default_Handler
170 #pragma weak MemManage_Handler=Default_Handler
171 #pragma weak BusFault_Handler=Default_Handler
172 #pragma weak UsageFault_Handler=Default_Handler
173 #pragma weak SVC_Handler=Default_Handler
174 #pragma weak DebugMon_Handler=Default_Handler
175 #pragma weak PendSV_Handler=Default_Handler
176 #pragma weak SysTick_Handler=Default_Handler
177
178 /* device specific interrupt handler */
179 #pragma weak GPIOA_IRQHandler=Default_Handler
180 #pragma weak GPIOB_IRQHandler=Default_Handler
181 #pragma weak GPIOC_IRQHandler=Default_Handler
182 #pragma weak GPIOD_IRQHandler=Default_Handler
183 #pragma weak GPIOE_IRQHandler=Default_Handler
184 #pragma weak UART0_IRQHandler=Default_Handler
185 #pragma weak UART1_IRQHandler=Default_Handler
186 #pragma weak SSI0_IRQHandler=Default_Handler
187 #pragma weak I2C0_IRQHandler=Default_Handler
188 #pragma weak PWM0_FAULT_IRQHandler=Default_Handler
189 #pragma weak PWM0_0_IRQHandler=Default_Handler
190 #pragma weak PWM0_1_IRQHandler=Default_Handler
191 #pragma weak PWM0_2_IRQHandler=Default_Handler
192 #pragma weak QEI0_IRQHandler=Default_Handler
193 #pragma weak ADC0SS0_IRQHandler=Default_Handler
194 #pragma weak ADC0SS1_IRQHandler=Default_Handler
195 #pragma weak ADC0SS2_IRQHandler=Default_Handler
196 #pragma weak ADC0SS3_IRQHandler=Default_Handler
197 #pragma weak WATCHDOG_IRQHandler=Default_Handler
198 #pragma weak TIMER0A_IRQHandler=Default_Handler
199 #pragma weak TIMER0B_IRQHandler=Default_Handler
200 #pragma weak TIMER1A_IRQHandler=Default_Handler
201 #pragma weak TIMER1B_IRQHandler=Default_Handler
202 #pragma weak TIMER2A_IRQHandler=Default_Handler
203 #pragma weak TIMER2B_IRQHandler=Default_Handler
204 #pragma weak COMP0_IRQHandler=Default_Handler
205 #pragma weak COMP1_IRQHandler=Default_Handler
206 #pragma weak COMP2_IRQHandler=Default_Handler
207 #pragma weak SYSCTL_IRQHandler=Default_Handler
208 #pragma weak FLASH_IRQHandler=Default_Handler
209 #pragma weak GPIOF_IRQHandler=Default_Handler
210 #pragma weak GPIOG_IRQHandler=Default_Handler
211 #pragma weak GPIOH_IRQHandler=Default_Handler
212 #pragma weak UART2_IRQHandler=Default_Handler
213 #pragma weak SSI1_IRQHandler=Default_Handler
214 #pragma weak TIMER3A_IRQHandler=Default_Handler
215 #pragma weak TIMER3B_IRQHandler=Default_Handler
216 #pragma weak I2C1_IRQHandler=Default_Handler
217 #pragma weak CAN0_IRQHandler=Default_Handler
218 #pragma weak CAN1_IRQHandler=Default_Handler
219 #pragma weak EMAC0_IRQHandler=Default_Handler
220 #pragma weak HIBERNATE_IRQHandler=Default_Handler
221 #pragma weak USB0_IRQHandler=Default_Handler
222 #pragma weak PWM0_3_IRQHandler=Default_Handler
223 #pragma weak UDMA_IRQHandler=Default_Handler
224 #pragma weak UDMAERR_IRQHandler=Default_Handler
225 #pragma weak ADC1SS0_IRQHandler=Default_Handler
226 #pragma weak ADC1SS1_IRQHandler=Default_Handler
227 #pragma weak ADC1SS2_IRQHandler=Default_Handler
228 #pragma weak ADC1SS3_IRQHandler=Default_Handler
229 #pragma weak EPI0_IRQHandler=Default_Handler
230 #pragma weak GPIOJ_IRQHandler=Default_Handler
231 #pragma weak GPIOK_IRQHandler=Default_Handler
232 #pragma weak GPIOL_IRQHandler=Default_Handler
233 #pragma weak SSI2_IRQHandler=Default_Handler
234 #pragma weak SSI3_IRQHandler=Default_Handler
235 #pragma weak UART3_IRQHandler=Default_Handler
236 #pragma weak UART4_IRQHandler=Default_Handler
237 #pragma weak UART5_IRQHandler=Default_Handler
238 #pragma weak UART6_IRQHandler=Default_Handler
239 #pragma weak UART7_IRQHandler=Default_Handler
240 #pragma weak I2C2_IRQHandler=Default_Handler
241 #pragma weak I2C3_IRQHandler=Default_Handler
242 #pragma weak TIMER4A_IRQHandler=Default_Handler
243 #pragma weak TIMER4B_IRQHandler=Default_Handler
244 #pragma weak TIMER5A_IRQHandler=Default_Handler
245 #pragma weak TIMER5B_IRQHandler=Default_Handler
246 #pragma weak SYSEXC_IRQHandler=Default_Handler
247 #pragma weak I2C4_IRQHandler=Default_Handler
248 #pragma weak I2C5_IRQHandler=Default_Handler
249 #pragma weak GPIOM_IRQHandler=Default_Handler
250 #pragma weak GPION_IRQHandler=Default_Handler
251 #pragma weak TAMPER0_IRQHandler=Default_Handler
252 #pragma weak GPIOP0_IRQHandler=Default_Handler
253 #pragma weak GPIOP1_IRQHandler=Default_Handler
254 #pragma weak GPIOP2_IRQHandler=Default_Handler
255 #pragma weak GPIOP3_IRQHandler=Default_Handler
256 #pragma weak GPIOP4_IRQHandler=Default_Handler
257 #pragma weak GPIOP5_IRQHandler=Default_Handler
258 #pragma weak GPIOP6_IRQHandler=Default_Handler
259 #pragma weak GPIOP7_IRQHandler=Default_Handler
260 #pragma weak GPIOQ0_IRQHandler=Default_Handler
261 #pragma weak GPIOQ1_IRQHandler=Default_Handler
262 #pragma weak GPIOQ2_IRQHandler=Default_Handler
263 #pragma weak GPIOQ3_IRQHandler=Default_Handler
264 #pragma weak GPIOQ4_IRQHandler=Default_Handler
265 #pragma weak GPIOQ5_IRQHandler=Default_Handler
266 #pragma weak GPIOQ6_IRQHandler=Default_Handler
267 #pragma weak GPIOQ7_IRQHandler=Default_Handler
268 #pragma weak SHA0_IRQHandler=Default_Handler
269 #pragma weak AES0_IRQHandler=Default_Handler
270 #pragma weak DES0_IRQHandler=Default_Handler
271 #pragma weak TIMER6A_IRQHandler=Default_Handler
272 #pragma weak TIMER6B_IRQHandler=Default_Handler
273 #pragma weak TIMER7A_IRQHandler=Default_Handler
274 #pragma weak TIMER7B_IRQHandler=Default_Handler
275 #pragma weak I2C6_IRQHandler=Default_Handler
276 #pragma weak I2C7_IRQHandler=Default_Handler
277 #pragma weak I2C8_IRQHandler=Default_Handler
278 #pragma weak I2C9_IRQHandler=Default_Handler
279
280 //*****************************************************************************
281 //
282 // The reference for the device initialization.
283 //
284 //*****************************************************************************
285 extern void SystemInit(void);
286
287 //*****************************************************************************
288 //
289 // The entry point for the application startup code.
290 //
291 //*****************************************************************************
292 extern int __low_level_init(void);
293
294 //*****************************************************************************
295 //
296 // A union that describes the entries of the vector table. The union is needed
297 // since the first entry is the stack pointer and the remainder are function
298 // pointers.
299 //
300 //*****************************************************************************
301 typedef union
302 {
303 void (*handler)(void);
304 uint32_t ptr;
305 }
306 uVectorEntry;
307
308 //*****************************************************************************
309 //
310 // The vector table. Note that the proper constructs must be placed on this to
311 // ensure that it ends up at physical address 0x0000.0000.
312 //
313 //*****************************************************************************
314 __root const uVectorEntry __vector_table[] @ ".intvec" =
315 {
316 { .ptr = (uint32_t)__sfe("CSTACK") }, /* The initial stack pointer */
317 Reset_Handler, /* The reset handler */
318 NMI_Handler, /* The NMI handler */
319 HardFault_Handler, /* The hard fault handler */
320 MemManage_Handler, /* The MPU fault handler */
321 BusFault_Handler, /* The bus fault handler */
322 UsageFault_Handler, /* The usage fault handler */
323 0, /* Reserved */
324 0, /* Reserved */
325 0, /* Reserved */
326 0, /* Reserved */
327 SVC_Handler, /* SVCall handler */
328 DebugMon_Handler, /* Debug monitor handler */
329 0, /* Reserved */
330 PendSV_Handler, /* The PendSV handler */
331 SysTick_Handler, /* The SysTick handler */
332 GPIOA_IRQHandler, /* GPIO Port A */
333 GPIOB_IRQHandler, /* GPIO Port B */
334 GPIOC_IRQHandler, /* GPIO Port C */
335 GPIOD_IRQHandler, /* GPIO Port D */
336 GPIOE_IRQHandler, /* GPIO Port E */
337 UART0_IRQHandler, /* UART0 Rx and Tx */
338 UART1_IRQHandler, /* UART1 Rx and Tx */
339 SSI0_IRQHandler, /* SSI0 Rx and Tx */
340 I2C0_IRQHandler, /* I2C0 Master and Slave */
341 PWM0_FAULT_IRQHandler, /* PWM Fault */
342 PWM0_0_IRQHandler, /* PWM Generator 0 */
343 PWM0_1_IRQHandler, /* PWM Generator 1 */
344 PWM0_2_IRQHandler, /* PWM Generator 2 */
345 QEI0_IRQHandler, /* Quadrature Encoder 0 */
346 ADC0SS0_IRQHandler, /* ADC Sequence 0 */
347 ADC0SS1_IRQHandler, /* ADC Sequence 1 */
348 ADC0SS2_IRQHandler, /* ADC Sequence 2 */
349 ADC0SS3_IRQHandler, /* ADC Sequence 3 */
350 WATCHDOG_IRQHandler, /* Watchdog timer */
351 TIMER0A_IRQHandler, /* Timer 0 subtimer A */
352 TIMER0B_IRQHandler, /* Timer 0 subtimer B */
353 TIMER1A_IRQHandler, /* Timer 1 subtimer A */
354 TIMER1B_IRQHandler, /* Timer 1 subtimer B */
355 TIMER2A_IRQHandler, /* Timer 2 subtimer A */
356 TIMER2B_IRQHandler, /* Timer 2 subtimer B */
357 COMP0_IRQHandler, /* Analog Comparator 0 */
358 COMP1_IRQHandler, /* Analog Comparator 1 */
359 COMP2_IRQHandler, /* Analog Comparator 2 */
360 SYSCTL_IRQHandler, /* System Control */
361 FLASH_IRQHandler, /* FLASH Control */
362 GPIOF_IRQHandler, /* GPIO Port F */
363 GPIOG_IRQHandler, /* GPIO Port G */
364 GPIOH_IRQHandler, /* GPIO Port H */
365 UART2_IRQHandler, /* UART2 Rx and Tx */
366 SSI1_IRQHandler, /* SSI1 Rx and Tx */
367 TIMER3A_IRQHandler, /* Timer 3 subtimer A */
368 TIMER3B_IRQHandler, /* Timer 3 subtimer B */
369 I2C1_IRQHandler, /* I2C1 Master and Slave */
370 CAN0_IRQHandler, /* CAN0 */
371 CAN1_IRQHandler, /* CAN1 */
372 EMAC0_IRQHandler, /* Ethernet */
373 HIBERNATE_IRQHandler, /* Hibernate */
374 USB0_IRQHandler, /* USB0 */
375 PWM0_3_IRQHandler, /* PWM Generator 3 */
376 UDMA_IRQHandler, /* uDMA Software Transfer */
377 UDMAERR_IRQHandler, /* uDMA Error */
378 ADC1SS0_IRQHandler, /* ADC1 Sequence 0 */
379 ADC1SS1_IRQHandler, /* ADC1 Sequence 1 */
380 ADC1SS2_IRQHandler, /* ADC1 Sequence 2 */
381 ADC1SS3_IRQHandler, /* ADC1 Sequence 3 */
382 EPI0_IRQHandler, /* External Bus Interface 0 */
383 GPIOJ_IRQHandler, /* GPIO Port J */
384 GPIOK_IRQHandler, /* GPIO Port K */
385 GPIOL_IRQHandler, /* GPIO Port L */
386 SSI2_IRQHandler, /* SSI2 Rx and Tx */
387 SSI3_IRQHandler, /* SSI3 Rx and Tx */
388 UART3_IRQHandler, /* UART3 Rx and Tx */
389 UART4_IRQHandler, /* UART4 Rx and Tx */
390 UART5_IRQHandler, /* UART5 Rx and Tx */
391 UART6_IRQHandler, /* UART6 Rx and Tx */
392 UART7_IRQHandler, /* UART7 Rx and Tx */
393 I2C2_IRQHandler, /* I2C2 Master and Slave */
394 I2C3_IRQHandler, /* I2C3 Master and Slave */
395 TIMER4A_IRQHandler, /* Timer 4 subtimer A */
396 TIMER4B_IRQHandler, /* Timer 4 subtimer B */
397 TIMER5A_IRQHandler, /* Timer 5 subtimer A */
398 TIMER5B_IRQHandler, /* Timer 5 subtimer B */
399 SYSEXC_IRQHandler, /* FPU */
400 0, /* Reserved */
401 0, /* Reserved */
402 I2C4_IRQHandler, /* I2C4 Master and Slave */
403 I2C5_IRQHandler, /* I2C5 Master and Slave */
404 GPIOM_IRQHandler, /* GPIO Port M */
405 GPION_IRQHandler, /* GPIO Port N */
406 0, /* Reserved */
407 TAMPER0_IRQHandler, /* Tamper */
408 GPIOP0_IRQHandler, /* GPIO Port P(Summary or P0)*/
409 GPIOP1_IRQHandler, /* GPIO Port P1 */
410 GPIOP2_IRQHandler, /* GPIO Port P2 */
411 GPIOP3_IRQHandler, /* GPIO Port P3 */
412 GPIOP4_IRQHandler, /* GPIO Port P4 */
413 GPIOP5_IRQHandler, /* GPIO Port P5 */
414 GPIOP6_IRQHandler, /* GPIO Port P6 */
415 GPIOP7_IRQHandler, /* GPIO Port P7 */
416 GPIOQ0_IRQHandler, /* GPIO Port Q(Summary or Q0)*/
417 GPIOQ1_IRQHandler, /* GPIO Port Q1 */
418 GPIOQ2_IRQHandler, /* GPIO Port Q2 */
419 GPIOQ3_IRQHandler, /* GPIO Port Q3 */
420 GPIOQ4_IRQHandler, /* GPIO Port Q4 */
421 GPIOQ5_IRQHandler, /* GPIO Port Q5 */
422 GPIOQ6_IRQHandler, /* GPIO Port Q6 */
423 GPIOQ7_IRQHandler, /* GPIO Port Q7 */
424 0, /* Reserved */
425 0, /* Reserved */
426 SHA0_IRQHandler, /* SHA/MD5 0 */
427 AES0_IRQHandler, /* AES 0 */
428 DES0_IRQHandler, /* DES3DES 0 */
429 0, /* Reserved */
430 TIMER6A_IRQHandler, /* Timer 6 subtimer A */
431 TIMER6B_IRQHandler, /* Timer 6 subtimer B */
432 TIMER7A_IRQHandler, /* Timer 7 subtimer A */
433 TIMER7B_IRQHandler, /* Timer 7 subtimer B */
434 I2C6_IRQHandler, /* I2C6 Master and Slave */
435 I2C7_IRQHandler, /* I2C7 Master and Slave */
436 0, /* Reserved */
437 0, /* Reserved */
438 0, /* HIM PS/2 0 */
439 0, /* Reserved */
440 0, /* Reserved */
441 I2C8_IRQHandler, /* I2C8 Master and Slave */
442 I2C9_IRQHandler, /* I2C9 Master and Slave */
443 0, /* Reserved */
444 0, /* Reserved */
445 0 /* Reserved */
446 };
447
448 //*****************************************************************************
449 //
450 // This is the code that gets called when the processor first starts execution
451 // following a reset event. Only the absolutely necessary set is performed,
452 // after which the application supplied entry() routine is called. Any fancy
453 // actions (such as making decisions based on the reset cause register, and
454 // resetting the bits in that register) are left solely in the hands of the
455 // application.
456 //
457 //*****************************************************************************
Reset_Handler(void)458 __weak void Reset_Handler(void)
459 {
460 //
461 // Initialize the device
462 //
463 SystemInit();
464
465 //
466 // Call the application's entry point.
467 //
468 __low_level_init();
469 }
470
471 //*****************************************************************************
472 //
473 // This is the code that gets called when the processor receives an unexpected
474 // interrupt. This simply enters an infinite loop, preserving the system state
475 // for examination by a debugger.
476 //
477 //*****************************************************************************
Default_Handler(void)478 static void Default_Handler(void)
479 {
480 //
481 // Go into an infinite loop.
482 //
483 while (1)
484 {
485 }
486 }
487
488