EE445M RTOS
Taken at the University of Texas Spring 2015
startup_gcc.c
Go to the documentation of this file.
1 //*****************************************************************************
2 //
3 // startup_gcc.c - Startup code for use with GNU tools.
4 //
5 // Copyright (c) 2012-2013 Texas Instruments Incorporated. All rights reserved.
6 // Software License Agreement
7 //
8 // Texas Instruments (TI) is supplying this software for use solely and
9 // exclusively on TI's microcontroller products. The software is owned by
10 // TI and/or its suppliers, and is protected under applicable copyright
11 // laws. You may not combine this software with "viral" open-source
12 // software in order to form a larger program.
13 //
14 // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
15 // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
16 // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
18 // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
19 // DAMAGES, FOR ANY REASON WHATSOEVER.
20 //
21 // This is part of revision 1.0 of the EK-TM4C123GXL Firmware Package.
22 //
23 //*****************************************************************************
24 
25 #include <stdint.h>
26 #include <inc/hw_nvic.h>
27 #include <inc/hw_types.h>
28 
29 //*****************************************************************************
30 //
31 // Forward declaration of the default fault handlers.
32 //
33 //*****************************************************************************
34 void Reset_Handler(void);
35 static void NMI_Handler(void);
36 static void HardFault_Handler(void);
37 static void MemManage_Handler(void);
38 static void BusFault_Handler(void);
39 static void UsageFault_Handler(void);
40 static void SVC_Handler(void);
41 static void DebugMon_Handler(void);
42 static void PendSV_Handler(void);
43 static void SysTick_Handler(void);
44 
45 //*****************************************************************************
46 //
47 // External declarations for the interrupt handlers used by the application.
48 //
49 //*****************************************************************************
50 void __attribute__((weak)) GPIOPortA_Handler(void);
51 void __attribute__((weak)) GPIOPortB_Handler(void);
52 void __attribute__((weak)) GPIOPortC_Handler(void);
53 void __attribute__((weak)) GPIOPortD_Handler(void);
54 void __attribute__((weak)) GPIOPortE_Handler(void);
55 void __attribute__((weak)) UART0_Handler(void);
56 void __attribute__((weak)) UART1_Handler(void);
57 void __attribute__((weak)) SSI0_Handler(void);
58 void __attribute__((weak)) I2C0_Handler(void);
59 void __attribute__((weak)) PWM0Fault_Handler(void);
60 void __attribute__((weak)) PWM0Generator0_Handler(void);
61 void __attribute__((weak)) PWM0Generator1_Handler(void);
62 void __attribute__((weak)) PWM0Generator2_Handler(void);
63 void __attribute__((weak)) Quadrature0_Handler(void);
64 void __attribute__((weak)) ADC0Seq0_Handler(void);
65 void __attribute__((weak)) ADC0Seq1_Handler(void);
66 void __attribute__((weak)) ADC0Seq2_Handler(void);
67 void __attribute__((weak)) ADC0Seq3_Handler(void);
68 void __attribute__((weak)) WDT_Handler(void);
69 void __attribute__((weak)) TIMER0A_Handler(void);
70 void __attribute__((weak)) TIMER0B_Handler(void);
71 void __attribute__((weak)) TIMER1A_Handler(void);
72 void __attribute__((weak)) TIMER1B_Handler(void);
73 void __attribute__((weak)) TIMER2A_Handler(void);
74 void __attribute__((weak)) TIMER2B_Handler(void);
75 void __attribute__((weak)) Comp0_Handler(void);
76 void __attribute__((weak)) Comp1_Handler(void);
77 void __attribute__((weak)) Comp2_Handler(void);
78 void __attribute__((weak)) SysCtl_Handler(void);
79 void __attribute__((weak)) FlashCtl_Handler(void);
80 void __attribute__((weak)) GPIOPortF_Handler(void);
81 void __attribute__((weak)) GPIOPortG_Handler(void);
82 void __attribute__((weak)) GPIOPortH_Handler(void);
83 void __attribute__((weak)) UART2_Handler(void);
84 void __attribute__((weak)) SSI1_Handler(void);
85 void __attribute__((weak)) Timer3A_Handler(void);
86 void __attribute__((weak)) Timer3B_Handler(void);
87 void __attribute__((weak)) I2C1_Handler(void);
88 void __attribute__((weak)) Quadrature1_Handler(void);
89 void __attribute__((weak)) CAN0_Handler(void);
90 void __attribute__((weak)) CAN1_Handler(void);
91 void __attribute__((weak)) CAN2_Handler(void);
92 void __attribute__((weak)) Ethernet_Handler(void);
93 void __attribute__((weak)) Hibernate_Handler(void);
94 void __attribute__((weak)) USB0_Handler(void);
95 void __attribute__((weak)) PWM0Generator3_Handler(void);
96 void __attribute__((weak)) uDMA_Handler(void);
97 void __attribute__((weak)) uDMA_Error(void);
98 void __attribute__((weak)) ADC1Seq0_Handler(void);
99 void __attribute__((weak)) ADC1Seq1_Handler(void);
100 void __attribute__((weak)) ADC1Seq2_Handler(void);
101 void __attribute__((weak)) ADC1Seq3_Handler(void);
102 void __attribute__((weak)) I2S0_Handler(void);
103 void __attribute__((weak)) ExtBus_Handler(void);
104 void __attribute__((weak)) GPIOPortJ_Handler(void);
105 void __attribute__((weak)) GPIOPortK_Handler(void);
106 void __attribute__((weak)) GPIOPortL_Handler(void);
107 void __attribute__((weak)) SSI2_Handler(void);
108 void __attribute__((weak)) SSI3_Handler(void);
109 void __attribute__((weak)) UART3_Handler(void);
110 void __attribute__((weak)) UART4_Handler(void);
111 void __attribute__((weak)) UART5_Handler(void);
112 void __attribute__((weak)) UART6_Handler(void);
113 void __attribute__((weak)) UART7_Handler(void);
114 void __attribute__((weak)) I2C2_Handler(void);
115 void __attribute__((weak)) I2C3_Handler(void);
116 void __attribute__((weak)) Timer4A_Handler(void);
117 void __attribute__((weak)) Timer4B_Handler(void);
118 void __attribute__((weak)) Timer5A_Handler(void);
119 void __attribute__((weak)) Timer5B_Handler(void);
120 void __attribute__((weak)) WideTimer0A_Handler(void);
121 void __attribute__((weak)) WideTimer0B_Handler(void);
122 void __attribute__((weak)) WideTimer1A_Handler(void);
123 void __attribute__((weak)) WideTimer1B_Handler(void);
124 void __attribute__((weak)) WideTimer2A_Handler(void);
125 void __attribute__((weak)) WideTimer2B_Handler(void);
126 void __attribute__((weak)) WideTimer3A_Handler(void);
127 void __attribute__((weak)) WideTimer3B_Handler(void);
128 void __attribute__((weak)) WideTimer4A_Handler(void);
129 void __attribute__((weak)) WideTimer4B_Handler(void);
130 void __attribute__((weak)) WideTimer5A_Handler(void);
131 void __attribute__((weak)) WideTimer5B_Handler(void);
132 void __attribute__((weak)) FPU_Handler(void);
133 void __attribute__((weak)) PECI0_Handler(void);
134 void __attribute__((weak)) LPC0_Handler(void);
135 void __attribute__((weak)) I2C4_Handler(void);
136 void __attribute__((weak)) I2C5_Handler(void);
137 void __attribute__((weak)) GPIOPortM_Handler(void);
138 void __attribute__((weak)) GPIOPortN_Handler(void);
139 void __attribute__((weak)) Quadrature2_Handler(void);
140 void __attribute__((weak)) Fan0_Handler(void);
141 void __attribute__((weak)) GPIOPortP_Handler(void);
142 void __attribute__((weak)) GPIOPortP1_Handler(void);
143 void __attribute__((weak)) GPIOPortP2_Handler(void);
144 void __attribute__((weak)) GPIOPortP3_Handler(void);
145 void __attribute__((weak)) GPIOPortP4_Handler(void);
146 void __attribute__((weak)) GPIOPortP5_Handler(void);
147 void __attribute__((weak)) GPIOPortP6_Handler(void);
148 void __attribute__((weak)) GPIOPortP7_Handler(void);
149 void __attribute__((weak)) GPIOPortQ_Handler(void);
150 void __attribute__((weak)) GPIOPortQ1_Handler(void);
151 void __attribute__((weak)) GPIOPortQ2_Handler(void);
152 void __attribute__((weak)) GPIOPortQ3_Handler(void);
153 void __attribute__((weak)) GPIOPortQ4_Handler(void);
154 void __attribute__((weak)) GPIOPortQ5_Handler(void);
155 void __attribute__((weak)) GPIOPortQ6_Handler(void);
156 void __attribute__((weak)) GPIOPortQ7_Handler(void);
157 void __attribute__((weak)) GPIOPortR_Handler(void);
158 void __attribute__((weak)) GPIOPortS_Handler(void);
159 void __attribute__((weak)) PWM1Generator0_Handler(void);
160 void __attribute__((weak)) PWM1Generator1_Handler(void);
161 void __attribute__((weak)) PWM1Generator2_Handler(void);
162 void __attribute__((weak)) PWM1Generator3_Handler(void);
163 void __attribute__((weak)) PWM1Fault_Handler(void);
164 
165 //*****************************************************************************
166 //
167 // The entry point for the application.
168 //
169 //*****************************************************************************
170 extern int main(void);
171 
172 //*****************************************************************************
173 //
174 // Reserve space for the system stack.
175 //
176 //*****************************************************************************
177 static uint32_t pui32Stack[256];
178 
179 //*****************************************************************************
180 //
181 // The vector table. Note that the proper constructs must be placed on this to
182 // ensure that it ends up at physical address 0x0000.0000.
183 //
184 //*****************************************************************************
185 __attribute__ ((section(".isr_vector")))
186 void (* const g_pfnVectors[])(void) =
187 {
188  (void (*)(void))((uint32_t)pui32Stack + sizeof(pui32Stack)),
189  // The initial stack pointer
190  Reset_Handler, // The reset handler
191  NMI_Handler, // The NMI handler
192  HardFault_Handler, // The hard fault handler
193  MemManage_Handler, // The MPU fault handler
194  BusFault_Handler, // The bus fault handler
195  UsageFault_Handler, // The usage fault handler
196  0, // Reserved
197  0, // Reserved
198  0, // Reserved
199  0, // Reserved
200  SVC_Handler, // SVCall handler
201  DebugMon_Handler, // Debug monitor handler
202  0, // Reserved
203  PendSV_Handler, // The PendSV handler
204  SysTick_Handler, // The SysTick handler
205  GPIOPortA_Handler, // GPIO Port A
206  GPIOPortB_Handler, // GPIO Port B
207  GPIOPortC_Handler, // GPIO Port C
208  GPIOPortD_Handler, // GPIO Port D
209  GPIOPortE_Handler, // GPIO Port E
210  UART0_Handler, // UART0 Rx and Tx
211  UART1_Handler, // UART1 Rx and Tx
212  SSI0_Handler, // SSI0 Rx and Tx
213  I2C0_Handler, // I2C0 Master and Slave
214  PWM0Fault_Handler, // PWM Fault
215  PWM0Generator0_Handler, // PWM Generator 0
216  PWM0Generator1_Handler, // PWM Generator 1
217  PWM0Generator2_Handler, // PWM Generator 2
218  Quadrature0_Handler, // Quadrature Encoder 0
219  ADC0Seq0_Handler, // ADC Sequence 0
220  ADC0Seq1_Handler, // ADC Sequence 1
221  ADC0Seq2_Handler, // ADC Sequence 2
222  ADC0Seq3_Handler, // ADC Sequence 3
223  WDT_Handler, // Watchdog timer
224  TIMER0A_Handler, // Timer 0 subtimer A
225  TIMER0B_Handler, // Timer 0 subtimer B
226  TIMER1A_Handler, // Timer 1 subtimer A
227  TIMER1B_Handler, // Timer 1 subtimer B
228  TIMER2A_Handler, // Timer 2 subtimer A
229  TIMER2B_Handler, // Timer 2 subtimer B
230  Comp0_Handler, // Analog Comparator 0
231  Comp1_Handler, // Analog Comparator 1
232  Comp2_Handler, // Analog Comparator 2
233  SysCtl_Handler, // System Control (PLL, OSC, BO)
234  FlashCtl_Handler, // FLASH Control
235  GPIOPortF_Handler, // GPIO Port F
236  GPIOPortG_Handler, // GPIO Port G
237  GPIOPortH_Handler, // GPIO Port H
238  UART2_Handler, // UART2 Rx and Tx
239  SSI1_Handler, // SSI1 Rx and Tx
240  Timer3A_Handler, // Timer 3 subtimer A
241  Timer3B_Handler, // Timer 3 subtimer B
242  I2C1_Handler, // I2C1 Master and Slave
243  Quadrature1_Handler, // Quadrature Encoder 1
244  CAN0_Handler, // CAN0
245  CAN1_Handler, // CAN1
246  CAN2_Handler, // CAN2
247  0, // Reserved
248  Hibernate_Handler, // Hibernate
249  USB0_Handler, // USB0
250  PWM0Generator3_Handler, // PWM Generator 3
251  uDMA_Handler, // uDMA Software Transfer
252  uDMA_Error, // uDMA Error
253  ADC1Seq0_Handler, // ADC1 Sequence 0
254  ADC1Seq1_Handler, // ADC1 Sequence 1
255  ADC1Seq2_Handler, // ADC1 Sequence 2
256  ADC1Seq3_Handler, // ADC1 Sequence 3
257  0, // Reserved
258  0, // Reserved
259  GPIOPortJ_Handler, // GPIO Port J
260  GPIOPortK_Handler, // GPIO Port K
261  GPIOPortL_Handler, // GPIO Port L
262  SSI2_Handler, // SSI2 Rx and Tx
263  SSI3_Handler, // SSI3 Rx and Tx
264  UART3_Handler, // UART3 Rx and Tx
265  UART4_Handler, // UART4 Rx and Tx
266  UART5_Handler, // UART5 Rx and Tx
267  UART6_Handler, // UART6 Rx and Tx
268  UART7_Handler, // UART7 Rx and Tx
269  0, // Reserved
270  0, // Reserved
271  0, // Reserved
272  0, // Reserved
273  I2C2_Handler, // I2C2 Master and Slave
274  I2C3_Handler, // I2C3 Master and Slave
275  Timer4A_Handler, // Timer 4 subtimer A
276  Timer4B_Handler, // Timer 4 subtimer B
277  0, // Reserved
278  0, // Reserved
279  0, // Reserved
280  0, // Reserved
281  0, // Reserved
282  0, // Reserved
283  0, // Reserved
284  0, // Reserved
285  0, // Reserved
286  0, // Reserved
287  0, // Reserved
288  0, // Reserved
289  0, // Reserved
290  0, // Reserved
291  0, // Reserved
292  0, // Reserved
293  0, // Reserved
294  0, // Reserved
295  0, // Reserved
296  0, // Reserved
297  Timer5A_Handler, // Timer 5 subtimer A
298  Timer5B_Handler, // Timer 5 subtimer B
299  WideTimer0A_Handler, // Wide Timer 0 subtimer A
300  WideTimer0B_Handler, // Wide Timer 0 subtimer B
301  WideTimer1A_Handler, // Wide Timer 1 subtimer A
302  WideTimer1B_Handler, // Wide Timer 1 subtimer B
303  WideTimer2A_Handler, // Wide Timer 2 subtimer A
304  WideTimer2B_Handler, // Wide Timer 2 subtimer B
305  WideTimer3A_Handler, // Wide Timer 3 subtimer A
306  WideTimer3B_Handler, // Wide Timer 3 subtimer B
307  WideTimer4A_Handler, // Wide Timer 4 subtimer A
308  WideTimer4B_Handler, // Wide Timer 4 subtimer B
309  WideTimer5A_Handler, // Wide Timer 5 subtimer A
310  WideTimer5B_Handler, // Wide Timer 5 subtimer B
311  FPU_Handler, // FPU
312  0, // Reserved
313  0, // Reserved
314  I2C4_Handler , // I2C4 Master and Slave
315  I2C5_Handler , // I2C5 Master and Slave
316  GPIOPortM_Handler , // GPIO Port M
317  GPIOPortN_Handler , // GPIO Port N
318  Quadrature2_Handler, // Quadrature Encoder 2
319  0, // Reserved
320  0, // Reserved
321  GPIOPortP_Handler , // GPIO Port P (Summary or P0)
322  GPIOPortP1_Handler , // GPIO Port P1
323  GPIOPortP2_Handler , // GPIO Port P2
324  GPIOPortP3_Handler , // GPIO Port P3
325  GPIOPortP4_Handler , // GPIO Port P4
326  GPIOPortP5_Handler , // GPIO Port P5
327  GPIOPortP6_Handler , // GPIO Port P6
328  GPIOPortP7_Handler , // GPIO Port P7
329  GPIOPortQ_Handler , // GPIO Port Q (Summary or Q0)
330  GPIOPortQ1_Handler , // GPIO Port Q1
331  GPIOPortQ2_Handler , // GPIO Port Q2
332  GPIOPortQ3_Handler , // GPIO Port Q3
333  GPIOPortQ4_Handler , // GPIO Port Q4
334  GPIOPortQ5_Handler , // GPIO Port Q5
335  GPIOPortQ6_Handler , // GPIO Port Q6
336  GPIOPortQ7_Handler , // GPIO Port Q7
337  GPIOPortR_Handler , // GPIO Port R
338  GPIOPortS_Handler , // GPIO Port S
339  PWM1Generator0_Handler, // PWM 1 Generator 0
340  PWM1Generator1_Handler, // PWM 1 Generator 1
341  PWM1Generator2_Handler, // PWM 1 Generator 2
342  PWM1Generator3_Handler, // PWM 1 Generator 3
343  PWM1Fault_Handler // PWM 1 Fault
344 };
345 
346 //*****************************************************************************
347 //
348 // The following are constructs created by the linker, indicating where the
349 // the "data" and "bss" segments reside in memory. The initializers for the
350 // for the "data" segment resides immediately following the "text" segment.
351 //
352 //*****************************************************************************
353 extern uint32_t _etext;
354 extern uint32_t _data;
355 extern uint32_t _edata;
356 extern uint32_t _bss;
357 extern uint32_t _ebss;
358 
359 //*****************************************************************************
360 //
361 // This is the code that gets called when the processor first starts execution
362 // following a reset event. Only the absolutely necessary set is performed,
363 // after which the application supplied entry() routine is called. Any fancy
364 // actions (such as making decisions based on the reset cause register, and
365 // resetting the bits in that register) are left solely in the hands of the
366 // application.
367 //
368 //*****************************************************************************
369 void
371 {
372  uint32_t *pui32Src, *pui32Dest;
373 
374  //
375  // Copy the data segment initializers from flash to SRAM.
376  //
377  pui32Src = &_etext;
378  for(pui32Dest = &_data; pui32Dest < &_edata; )
379  {
380  *pui32Dest++ = *pui32Src++;
381  }
382 
383  //
384  // Zero fill the bss segment.
385  //
386  __asm(" ldr r0, =_bss\n"
387  " ldr r1, =_ebss\n"
388  " mov r2, #0\n"
389  " .thumb_func\n"
390  "zero_loop:\n"
391  " cmp r0, r1\n"
392  " it lt\n"
393  " strlt r2, [r0], #4\n"
394  " blt zero_loop");
395 
396  //
397  // Enable the floating-point unit. This must be done here to handle the
398  // case where main() uses floating-point and the function prologue saves
399  // floating-point registers (which will fault if floating-point is not
400  // enabled). Any configuration of the floating-point unit using DriverLib
401  // APIs must be done here prior to the floating-point unit being enabled.
402  //
403  // Note that this does not use DriverLib since it might not be included in
404  // this project.
405  //
406 // HWREG(NVIC_CPAC) = ((HWREG(NVIC_CPAC) &
407 // ~(NVIC_CPAC_CP10_M | NVIC_CPAC_CP11_M)) |
408 // NVIC_CPAC_CP10_FULL | NVIC_CPAC_CP11_FULL);
409 //
410  //
411  // Call the application's entry point.
412  //
413  main();
414 }
415 
416 //*****************************************************************************
417 //
418 // This is the code that gets called when the processor receives a NMI. This
419 // simply enters an infinite loop, preserving the system state for examination
420 // by a debugger.
421 //
422 //*****************************************************************************
423 static void
425 {
426  //
427  // Enter an infinite loop.
428  //
429  while(1)
430  {
431  }
432 }
433 
434 //*****************************************************************************
435 //
436 // This is the code that gets called when the processor receives a fault
437 // interrupt. This simply enters an infinite loop, preserving the system state
438 // for examination by a debugger.
439 //
440 //*****************************************************************************
441 static void
443 {
444  //
445  // Enter an infinite loop.
446  //
447  while(1)
448  {
449  }
450 }
451 
452 static void
454 {
455  //
456  // Enter an infinite loop.
457  //
458  while(1)
459  {
460  }
461 }
462 
463 static void
465 {
466  //
467  // Enter an infinite loop.
468  //
469  while(1)
470  {
471  }
472 }
473 
474 static void
476 {
477  //
478  // Enter an infinite loop.
479  //
480  while(1)
481  {
482  }
483 }
484 
485 static void
487 {
488  //
489  // Enter an infinite loop.
490  //
491  while(1)
492  {
493  }
494 }
495 
496 static void
498 {
499  //
500  // Enter an infinite loop.
501  //
502  while(1)
503  {
504  }
505 }
506 
507 static void
509 {
510  //
511  // Enter an infinite loop.
512  //
513  while(1)
514  {
515  }
516 }
517 
518 static void
520 {
521  //
522  // Enter an infinite loop.
523  //
524  while(1)
525  {
526  }
527 }
528 
529 static void Default_Handler(void);
530 #pragma weak GPIOPortA_Handler = Default_Handler
531 #pragma weak GPIOPortB_Handler = Default_Handler
532 #pragma weak GPIOPortC_Handler = Default_Handler
533 #pragma weak GPIOPortD_Handler = Default_Handler
534 #pragma weak GPIOPortE_Handler = Default_Handler
535 #pragma weak UART0_Handler = Default_Handler
536 #pragma weak UART1_Handler = Default_Handler
537 #pragma weak SSI0_Handler = Default_Handler
538 #pragma weak I2C0_Handler = Default_Handler
539 #pragma weak PWM0Fault_Handler = Default_Handler
540 #pragma weak PWM0Generator0_Handler = Default_Handler
541 #pragma weak PWM0Generator1_Handler = Default_Handler
542 #pragma weak PWM0Generator2_Handler = Default_Handler
543 #pragma weak Quadrature0_Handler = Default_Handler
544 #pragma weak ADC0Seq0_Handler = Default_Handler
545 #pragma weak ADC0Seq1_Handler = Default_Handler
546 #pragma weak ADC0Seq2_Handler = Default_Handler
547 #pragma weak ADC0Seq3_Handler = Default_Handler
548 #pragma weak WDT_Handler = Default_Handler
549 #pragma weak TIMER0A_Handler = Default_Handler
550 #pragma weak TIMER0B_Handler = Default_Handler
551 #pragma weak TIMER1A_Handler = Default_Handler
552 #pragma weak TIMER1B_Handler = Default_Handler
553 #pragma weak TIMER2A_Handler = Default_Handler
554 #pragma weak TIMER2B_Handler = Default_Handler
555 #pragma weak Comp0_Handler = Default_Handler
556 #pragma weak Comp1_Handler = Default_Handler
557 #pragma weak Comp2_Handler = Default_Handler
558 #pragma weak SysCtl_Handler = Default_Handler
559 #pragma weak FlashCtl_Handler = Default_Handler
560 #pragma weak GPIOPortF_Handler = Default_Handler
561 #pragma weak GPIOPortG_Handler = Default_Handler
562 #pragma weak GPIOPortH_Handler = Default_Handler
563 #pragma weak UART2_Handler = Default_Handler
564 #pragma weak SSI1_Handler = Default_Handler
565 #pragma weak Timer3A_Handler = Default_Handler
566 #pragma weak Timer3B_Handler = Default_Handler
567 #pragma weak I2C1_Handler = Default_Handler
568 #pragma weak Quadrature1_Handler = Default_Handler
569 #pragma weak CAN0_Handler = Default_Handler
570 #pragma weak CAN1_Handler = Default_Handler
571 #pragma weak CAN2_Handler = Default_Handler
572 #pragma weak Ethernet_Handler = Default_Handler
573 #pragma weak Hibernate_Handler = Default_Handler
574 #pragma weak USB0_Handler = Default_Handler
575 #pragma weak PWM0Generator3_Handler = Default_Handler
576 #pragma weak uDMA_Handler = Default_Handler
577 #pragma weak uDMA_Error = Default_Handler
578 #pragma weak ADC1Seq0_Handler = Default_Handler
579 #pragma weak ADC1Seq1_Handler = Default_Handler
580 #pragma weak ADC1Seq2_Handler = Default_Handler
581 #pragma weak ADC1Seq3_Handler = Default_Handler
582 #pragma weak I2S0_Handler = Default_Handler
583 #pragma weak ExtBus_Handler = Default_Handler
584 #pragma weak GPIOPortJ_Handler = Default_Handler
585 #pragma weak GPIOPortK_Handler = Default_Handler
586 #pragma weak GPIOPortL_Handler = Default_Handler
587 #pragma weak SSI2_Handler = Default_Handler
588 #pragma weak SSI3_Handler = Default_Handler
589 #pragma weak UART3_Handler = Default_Handler
590 #pragma weak UART4_Handler = Default_Handler
591 #pragma weak UART5_Handler = Default_Handler
592 #pragma weak UART6_Handler = Default_Handler
593 #pragma weak UART7_Handler = Default_Handler
594 #pragma weak I2C2_Handler = Default_Handler
595 #pragma weak I2C3_Handler = Default_Handler
596 #pragma weak Timer4A_Handler = Default_Handler
597 #pragma weak Timer4B_Handler = Default_Handler
598 #pragma weak Timer5A_Handler = Default_Handler
599 #pragma weak Timer5B_Handler = Default_Handler
600 #pragma weak WideTimer0A_Handler = Default_Handler
601 #pragma weak WideTimer0B_Handler = Default_Handler
602 #pragma weak WideTimer1A_Handler = Default_Handler
603 #pragma weak WideTimer1B_Handler = Default_Handler
604 #pragma weak WideTimer2A_Handler = Default_Handler
605 #pragma weak WideTimer2B_Handler = Default_Handler
606 #pragma weak WideTimer3A_Handler = Default_Handler
607 #pragma weak WideTimer3B_Handler = Default_Handler
608 #pragma weak WideTimer4A_Handler = Default_Handler
609 #pragma weak WideTimer4B_Handler = Default_Handler
610 #pragma weak WideTimer5A_Handler = Default_Handler
611 #pragma weak WideTimer5B_Handler = Default_Handler
612 #pragma weak FPU_Handler = Default_Handler
613 #pragma weak PECI0_Handler = Default_Handler
614 #pragma weak LPC0_Handler = Default_Handler
615 #pragma weak I2C4_Handler = Default_Handler
616 #pragma weak I2C5_Handler = Default_Handler
617 #pragma weak GPIOPortM_Handler = Default_Handler
618 #pragma weak GPIOPortN_Handler = Default_Handler
619 #pragma weak Quadrature2_Handler = Default_Handler
620 #pragma weak Fan0_Handler = Default_Handler
621 #pragma weak GPIOPortP_Handler = Default_Handler
622 #pragma weak GPIOPortP1_Handler = Default_Handler
623 #pragma weak GPIOPortP2_Handler = Default_Handler
624 #pragma weak GPIOPortP3_Handler = Default_Handler
625 #pragma weak GPIOPortP4_Handler = Default_Handler
626 #pragma weak GPIOPortP5_Handler = Default_Handler
627 #pragma weak GPIOPortP6_Handler = Default_Handler
628 #pragma weak GPIOPortP7_Handler = Default_Handler
629 #pragma weak GPIOPortQ_Handler = Default_Handler
630 #pragma weak GPIOPortQ1_Handler = Default_Handler
631 #pragma weak GPIOPortQ2_Handler = Default_Handler
632 #pragma weak GPIOPortQ3_Handler = Default_Handler
633 #pragma weak GPIOPortQ4_Handler = Default_Handler
634 #pragma weak GPIOPortQ5_Handler = Default_Handler
635 #pragma weak GPIOPortQ6_Handler = Default_Handler
636 #pragma weak GPIOPortQ7_Handler = Default_Handler
637 #pragma weak GPIOPortR_Handler = Default_Handler
638 #pragma weak GPIOPortS_Handler = Default_Handler
639 #pragma weak PWM1Generator0_Handler = Default_Handler
640 #pragma weak PWM1Generator1_Handler = Default_Handler
641 #pragma weak PWM1Generator2_Handler = Default_Handler
642 #pragma weak PWM1Generator3_Handler = Default_Handler
643 #pragma weak PWM1Fault_Handler = Default_Handler
644 
645 static void Default_Handler(void) {
646 // while (1) {}
647 }
void GPIOPortF_Handler(void)
Definition: hardware.c:238
static void NMI_Handler(void)
Definition: startup_gcc.c:424
static void SVC_Handler(void)
Definition: startup_gcc.c:486
static void Default_Handler(void)
Definition: startup_gcc.c:645
uint32_t _ebss
void Reset_Handler(void)
Definition: startup_gcc.c:370
void TIMER1A_Handler(void)
Definition: hardware.c:355
void ADC0Seq2_Handler(void)
Definition: hardware.c:392
static void DebugMon_Handler(void)
Definition: startup_gcc.c:497
static void MemManage_Handler(void)
Definition: startup_gcc.c:453
uint32_t _etext
uint32_t _edata
static void PendSV_Handler(void)
Definition: startup_gcc.c:508
int main(void)
Definition: blinky.c:45
void ADC0Seq1_Handler(void)
Definition: hardware.c:385
static void BusFault_Handler(void)
Definition: startup_gcc.c:464
void TIMER0A_Handler(void)
static void SysTick_Handler(void)
Definition: startup_gcc.c:519
void ADC0Seq3_Handler(void)
Definition: hardware.c:402
void TIMER2A_Handler(void)
Definition: hardware.c:370
void __attribute__((weak))
Definition: startup_gcc.c:50
uint32_t _bss
static void HardFault_Handler(void)
Definition: startup_gcc.c:442
static void UsageFault_Handler(void)
Definition: startup_gcc.c:475
uint32_t _data
void UART0_Handler(void)
Definition: hardware.c:254
void ADC0Seq0_Handler(void)
Definition: hardware.c:378