📄 startup_gcc.c
字号:
//*****************************************************************************//// startup_gcc.c - Startup code for use with GNU tools.//// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved.// Luminary Micro Confidential - For Use Under NDA Only////*****************************************************************************//*****************************************************************************//// Forward declaration of the default fault handlers.////*****************************************************************************void ResetISR(void);//*****************************************************************************//// External declarations for the interrupt handlers used by the application.////*****************************************************************************extern void IntDefaultHandler(void);extern void ADC0IntHandler(void);extern void ADC1IntHandler(void);extern void ADC2IntHandler(void);extern void ADC3IntHandler(void);extern void CANIntHandler(void);extern void EthernetIntHandler(void);extern void GPIOBIntHandler(void);extern void GPIOCIntHandler(void);extern void FaultISR(void);extern void NmiSR(void);extern void PWM0IntHandler(void);extern void MainWaveformTick(void);extern void MainMillisecondTick(void);extern void QEIIntHandler(void);extern void SysTickIntHandler(void);extern void Timer0AIntHandler(void);extern void Timer1AIntHandler(void);extern void UART0IntHandler(void);extern void WatchdogIntHandler(void);//*****************************************************************************//// The entry point for the application.////*****************************************************************************extern int main(void);//*****************************************************************************//// Reserve space for the system stack.////*****************************************************************************static unsigned long pulStack[1024];//*****************************************************************************//// The vector table. Note that the proper constructs must be placed on this to// ensure that it ends up at physical address 0x0000.0000.////*****************************************************************************__attribute__ ((section(".isr_vector")))void (* const g_pfnVectors[])(void) ={ (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)), // The initial stack pointer ResetISR, // The reset handler NmiSR, // The NMI handler FaultISR, // The hard fault handler IntDefaultHandler, // The MPU fault handler IntDefaultHandler, // The bus fault handler IntDefaultHandler, // The usage fault handler 0, // Reserved 0, // Reserved 0, // Reserved 0, // Reserved IntDefaultHandler, // SVCall handler IntDefaultHandler, // Debug monitor handler 0, // Reserved IntDefaultHandler, // The PendSV handler SysTickIntHandler, // The SysTick handler IntDefaultHandler, // GPIO Port A GPIOBIntHandler, // GPIO Port B GPIOCIntHandler, // GPIO Port C IntDefaultHandler, // GPIO Port D IntDefaultHandler, // GPIO Port E UART0IntHandler, // UART0 Rx and Tx IntDefaultHandler, // UART1 Rx and Tx IntDefaultHandler, // SSI Rx and Tx IntDefaultHandler, // I2C Master and Slave IntDefaultHandler, // PWM Fault PWM0IntHandler, // PWM Generator 0 MainWaveformTick, // PWM Generator 1 MainMillisecondTick, // PWM Generator 2 QEIIntHandler, // Quadrature Encoder ADC0IntHandler, // ADC Sequence 0 ADC1IntHandler, // ADC Sequence 1 ADC2IntHandler, // ADC Sequence 2 ADC3IntHandler, // ADC Sequence 3 WatchdogIntHandler, // Watchdog timer Timer0AIntHandler, // Timer 0 subtimer A IntDefaultHandler, // Timer 0 subtimer B Timer1AIntHandler, // Timer 1 subtimer A IntDefaultHandler, // Timer 1 subtimer B IntDefaultHandler, // Timer 2 subtimer A IntDefaultHandler, // Timer 2 subtimer B IntDefaultHandler, // Analog Comparator 0 IntDefaultHandler, // Analog Comparator 1 IntDefaultHandler, // Analog Comparator 2 IntDefaultHandler, // System Control (PLL, OSC, BO) IntDefaultHandler, // FLASH Control IntDefaultHandler, // GPIO Port F IntDefaultHandler, // GPIO Port G IntDefaultHandler, // GPIO Port H IntDefaultHandler, // UART2 Rx and Tx IntDefaultHandler, // SSI1 Rx and Tx IntDefaultHandler, // Timer 3 subtimer A IntDefaultHandler, // Timer 3 subtimer B IntDefaultHandler, // I2C1 Master and Slave IntDefaultHandler, // Quadrature Encoder 1 CANIntHandler, // CAN0 IntDefaultHandler, // CAN1 IntDefaultHandler, // CAN2 EthernetIntHandler, // Ethernet IntDefaultHandler // Hibernate};//*****************************************************************************//// The following are constructs created by the linker, indicating where the// the "data" and "bss" segments reside in memory. The initializers for the// for the "data" segment resides immediately following the "text" segment.////*****************************************************************************extern unsigned long _etext;extern unsigned long _data;extern unsigned long _edata;extern unsigned long _bss;extern unsigned long _ebss;//*****************************************************************************//// This is the code that gets called when the processor first starts execution// following a reset event. Only the absolutely necessary set is performed,// after which the application supplied entry() routine is called. Any fancy// actions (such as making decisions based on the reset cause register, and// resetting the bits in that register) are left solely in the hands of the// application.////*****************************************************************************voidResetISR(void){ unsigned long *pulSrc, *pulDest; // // Copy the data segment initializers from flash to SRAM. // pulSrc = &_etext; for(pulDest = &_data; pulDest < &_edata; ) { *pulDest++ = *pulSrc++; } // // Zero fill the bss segment. This is done with inline assembly since this // will clear the value of pulDest if it is not kept in a register. // __asm(" ldr r0, =_bss\n" " ldr r1, =_ebss\n" " mov r2, #0\n" " .thumb_func\n" "zero_loop:\n" " cmp r0, r1\n" " it lt\n" " strlt r2, [r0], #4\n" " blt zero_loop"); // // Call the application's entry point. // main();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -