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

📄 startup_ewarm.c

📁 无刷电机驱动器源代码。基于无传感器方案的无刷电机启动器。核心是换向角度检测:即电机反电势波形数据处理
💻 C
字号:
//*****************************************************************************//// startup_ewarm.c - Boot code for Stellaris.//// Copyright (c) 2005,2006 Luminary Micro, Inc.  All rights reserved.//// Software License Agreement//// Luminary Micro, Inc. (LMI) is supplying this software for use solely and// exclusively on LMI's microcontroller products.//// The software is owned by LMI and/or its suppliers, and is protected under// applicable copyright laws.  All rights are reserved.  Any use in violation// of the foregoing restrictions may subject the user to criminal sanctions// under applicable laws, as well as to civil liability for the breach of the// terms and conditions of this license.//// THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.//// This is part of revision 196 of an01238.////*****************************************************************************#include "ui.h"#include "bldc.h"//*****************************************************************************//// Enable the IAR extensions for this source file.////*****************************************************************************#pragma language=extended//*****************************************************************************//// Forward declaration of the default fault handlers.////*****************************************************************************void ResetISR(void);static void NmiSR(void);static void IntDefaultHandler(void);//*****************************************************************************//// The entry point for the application.////*****************************************************************************extern int main(void);//*****************************************************************************//// Reserve space for the system stack.////*****************************************************************************#ifndef STACK_SIZE#define STACK_SIZE                              64#endifstatic unsigned long pulStack[STACK_SIZE];//*****************************************************************************//// 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 minimal vector table for a Cortex M3.  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    HardFault,                              // 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    IntDefaultHandler,                      // The SysTick handler    IntDefaultHandler,                      // GPIO Port A    GPIOIntHandler,                         // GPIO Port B    EdgeIntHandler,                         // GPIO Port C    IntDefaultHandler,                      // GPIO Port D    IntDefaultHandler,                      // GPIO Port E    UIRxCallback,                           // UART0 Rx and Tx    IntDefaultHandler,                      // UART1 Rx and Tx    IntDefaultHandler,                      // SSI Rx and Tx    IntDefaultHandler,                      // I2C Master and Slave    IntDefaultHandler,                      // PWM Fault    IntDefaultHandler,                      // PWM Generator 0    IntDefaultHandler,                      // PWM Generator 1    IntDefaultHandler,                      // PWM Generator 2    QEIIntHandler,                          // Quadrature Encoder    IntDefaultHandler,                      // ADC Sequence 0    IntDefaultHandler,                      // ADC Sequence 1    IntDefaultHandler,                      // ADC Sequence 2    IntDefaultHandler,                      // ADC Sequence 3    IntDefaultHandler,                      // Watchdog timer    QEIIntHandler,                          // Timer 0 subtimer A    IntDefaultHandler,                      // Timer 0 subtimer B    IntDefaultHandler,                      // 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};//*****************************************************************************//// 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();}//*****************************************************************************//// This is the code that gets called when the processor receives a NMI.  This// simply enters an infinite loop, preserving the system state for examination// by a debugger.////*****************************************************************************static voidNmiSR(void){    //    // Enter an infinite loop.    //    while(1)    {    }}//*****************************************************************************//// This is the code that gets called when the processor receives an unexpected// interrupt.  This simply enters an infinite loop, preserving the system state// for examination by a debugger.////*****************************************************************************static voidIntDefaultHandler(void){    //    // Go into an infinite loop.    //    while(1)    {    }}

⌨️ 快捷键说明

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