⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 startup_ewarm.c

📁 Luminary Micro BLDC motor control software
💻 C
字号:
//*****************************************************************************//// startup_ewarm.c - Startup code for use with IAR's Embedded Workbench.//// Copyright (c) 2007 Luminary Micro, Inc.  All rights reserved.// Luminary Micro Confidential - For Use Under NDA Only////*****************************************************************************//*****************************************************************************//// Enable the IAR extensions for this source file.////*****************************************************************************#pragma language=extended//*****************************************************************************//// 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];//*****************************************************************************//// A union that describes the entries of the vector table.  The union is needed// since the first entry is the stack pointer and the remainder are function// pointers.////*****************************************************************************typedef union{    void (*pfnHandler)(void);    unsigned long ulPtr;}uVectorEntry;//*****************************************************************************//// The vector table.  Note that the proper constructs must be placed on this to// ensure that it ends up at physical address 0x0000.0000.////*****************************************************************************__root const uVectorEntry g_pfnVectors[] @ "INTVEC" ={    { .ulPtr = (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.////*****************************************************************************#pragma segment="DATA_ID"#pragma segment="DATA_I"#pragma segment="DATA_Z"//*****************************************************************************//// 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, *pulEnd;    //    // Copy the data segment initializers from flash to SRAM.    //    pulSrc = __segment_begin("DATA_ID");    pulDest = __segment_begin("DATA_I");    pulEnd = __segment_end("DATA_I");    while(pulDest < pulEnd)    {        *pulDest++ = *pulSrc++;    }    //    // Zero fill the bss segment.    //    pulDest = __segment_begin("DATA_Z");    pulEnd = __segment_end("DATA_Z");    while(pulDest < pulEnd)    {        *pulDest++ = 0;    }    //    // Call the application's entry point.    //    main();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -