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