?? bsp_exception.c
字號:
/*
*********************************************************************************************************
* NXP LPC2378
* Keil MCB2300 Board Support Package
*
* (c) Copyright 2005, Micrium, Weston, FL
* All Rights Reserved
*
*
* File : bsp_exception.c
* By : Eric Shufro
*********************************************************************************************************
*/
#include <includes.h>
/*
*********************************************************************************************************
* CONSTANTS
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* DATA TYPES
*********************************************************************************************************
*/
typedef void (*PFNCT)(void); /* Pointer to ISR handler function, void MyISR(void); */
/*
*********************************************************************************************************
* VARIABLES
*********************************************************************************************************
*/
CPU_INT32U VIC_SpuriousInt;
/*
*********************************************************************************************************
* PROTOTYPES
*********************************************************************************************************
*/
static void VIC_Dummy(void); /* Prototypes for dummy interrupt handlers */
static void VIC_DummyWDT(void);
static void VIC_DummySW(void);
static void VIC_DummyDEBUGRX(void);
static void VIC_DummyDEBUGTX(void);
static void VIC_DummyTIMER0(void);
static void VIC_DummyTIMER1(void);
static void VIC_DummyUART0(void);
static void VIC_DummyUART1(void);
static void VIC_DummyPWM01(void);
static void VIC_DummyI2C0(void);
static void VIC_DummySPI(void);
static void VIC_DummySSP1(void);
static void VIC_DummyPLL(void);
static void VIC_DummyRTC(void);
static void VIC_DummyEINT0(void);
static void VIC_DummyEINT1(void);
static void VIC_DummyEINT2(void);
static void VIC_DummyEINT3(void);
static void VIC_DummyAD0(void);
static void VIC_DummyI2C1(void);
static void VIC_DummyBOD(void);
static void VIC_DummyETHERNET(void);
static void VIC_DummyUSB(void);
static void VIC_DummyCAN01(void);
static void VIC_DummyMMC(void);
static void VIC_DummyGP_DMA(void);
static void VIC_DummyTIMER2(void);
static void VIC_DummyTIMER3(void);
static void VIC_DummyUART2(void);
static void VIC_DummyUART3(void);
static void VIC_DummyI2C2(void);
static void VIC_DummyI2S(void);
/*
*********************************************************************************************************
* DISABLE ALL INTERRUPTS
*
* Description : This function disables all interrupts from the interrupt controller.
*
* Arguments : none
*********************************************************************************************************
*/
void BSP_IntDisAll (void)
{
VICIntEnClear = 0xFFFFFFFFL; /* Disable ALL interrupts */
}
/*
*********************************************************************************************************
* EXCEPTION HANDLER
*
* Description : This function should be used to handle any exceptions. It is called by
* OS_CPU_ARM_EXCEPT_HANDLER(), which is declared in os_cpu_a.s
*
* Arguments : ID, an identifier used to indicate what type of ARM exception has been triggered
* Possible ID values are shown below.
* OS_CPU_ARM_EXCEPT_RESET 0x00
* OS_CPU_ARM_EXCEPT_UNDEF_INSTR 0x01
* OS_CPU_ARM_EXCEPT_SWI 0x02
* OS_CPU_ARM_EXCEPT_PREFETCH_ABORT 0x03
* OS_CPU_ARM_EXCEPT_DATA_ABORT 0x04
* OS_CPU_ARM_EXCEPT_ADDR_ABORT 0x05
* OS_CPU_ARM_EXCEPT_IRQ 0x06
* OS_CPU_ARM_EXCEPT_FIQ 0x07
*********************************************************************************************************
*/
void OS_CPU_ExceptHndlr (CPU_DATA ID)
{
PFNCT pfnct;
/* If this exception is either an IRQ or FIQ */
if ((ID == OS_CPU_ARM_EXCEPT_IRQ) || (ID == OS_CPU_ARM_EXCEPT_FIQ)) {
pfnct = (PFNCT)VICAddress; /* Read the interrupt vector from the VIC */
if (pfnct != (PFNCT)0) { /* Make sure we don't have a NULL pointer */
(*pfnct)(); /* Execute the ISR for the interrupting device */
VICAddress = 0; /* Acknowlege the VIC interrupt */
}
}
}
/*
*********************************************************************************************************
* Vectored Interrupt Controller
*********************************************************************************************************
*/
void VIC_Init (void)
{
VICIntEnClear = 0xFFFFFFFF; /* Disable ALL interrupts */
VICAddress = 0; /* Acknowlege any pending VIC interrupt */
VICProtection = 0; /* Allow VIC register access in User of Priviledged modes */
VICVectAddr0 = (CPU_INT32U)VIC_DummyWDT; /* Set the vector address */
VICVectAddr1 = (CPU_INT32U)VIC_DummySW;
VICVectAddr2 = (CPU_INT32U)VIC_DummyDEBUGRX;
VICVectAddr3 = (CPU_INT32U)VIC_DummyDEBUGTX;
VICVectAddr4 = (CPU_INT32U)VIC_DummyTIMER0;
VICVectAddr5 = (CPU_INT32U)VIC_DummyTIMER1;
VICVectAddr6 = (CPU_INT32U)VIC_DummyUART0;
VICVectAddr7 = (CPU_INT32U)VIC_DummyUART1;
VICVectAddr8 = (CPU_INT32U)VIC_DummyPWM01;
VICVectAddr9 = (CPU_INT32U)VIC_DummyI2C0;
VICVectAddr10 = (CPU_INT32U)VIC_DummySPI;
VICVectAddr11 = (CPU_INT32U)VIC_DummySSP1;
VICVectAddr12 = (CPU_INT32U)VIC_DummyPLL;
VICVectAddr13 = (CPU_INT32U)VIC_DummyRTC;
VICVectAddr14 = (CPU_INT32U)VIC_DummyEINT0;
VICVectAddr15 = (CPU_INT32U)VIC_DummyEINT1;
VICVectAddr16 = (CPU_INT32U)VIC_DummyEINT2;
VICVectAddr17 = (CPU_INT32U)VIC_DummyEINT3;
VICVectAddr18 = (CPU_INT32U)VIC_DummyAD0;
VICVectAddr19 = (CPU_INT32U)VIC_DummyI2C1;
VICVectAddr20 = (CPU_INT32U)VIC_DummyBOD;
VICVectAddr21 = (CPU_INT32U)VIC_DummyETHERNET;
VICVectAddr22 = (CPU_INT32U)VIC_DummyUSB;
VICVectAddr23 = (CPU_INT32U)VIC_DummyCAN01;
VICVectAddr24 = (CPU_INT32U)VIC_DummyMMC;
VICVectAddr25 = (CPU_INT32U)VIC_DummyGP_DMA;
VICVectAddr26 = (CPU_INT32U)VIC_DummyTIMER2;
VICVectAddr27 = (CPU_INT32U)VIC_DummyTIMER3;
VICVectAddr28 = (CPU_INT32U)VIC_DummyUART2;
VICVectAddr29 = (CPU_INT32U)VIC_DummyUART3;
VICVectAddr30 = (CPU_INT32U)VIC_DummyI2C2;
VICVectAddr31 = (CPU_INT32U)VIC_DummyI2S;
}
static void VIC_Dummy (void)
{
while (1) {
(void)VIC_SpuriousInt;
}
}
static void VIC_DummyWDT (void)
{
VIC_SpuriousInt = VIC_WDT;
VIC_Dummy();
}
static void VIC_DummySW (void)
{
VIC_SpuriousInt = VIC_SW;
VIC_Dummy();
}
static void VIC_DummyDEBUGRX (void)
{
VIC_SpuriousInt = VIC_DEBUGRX;
VIC_Dummy();
}
static void VIC_DummyDEBUGTX (void)
{
VIC_SpuriousInt = VIC_DEBUGTX;
VIC_Dummy();
}
static void VIC_DummyTIMER0 (void)
{
VIC_SpuriousInt = VIC_TIMER0;
VIC_Dummy();
}
static void VIC_DummyTIMER1 (void)
{
VIC_SpuriousInt = VIC_TIMER1;
VIC_Dummy();
}
static void VIC_DummyUART0 (void)
{
VIC_SpuriousInt = VIC_UART0;
VIC_Dummy();
}
static void VIC_DummyUART1 (void)
{
VIC_SpuriousInt = VIC_UART1;
VIC_Dummy();
}
static void VIC_DummyPWM01 (void)
{
VIC_SpuriousInt = VIC_PWM01;
VIC_Dummy();
}
static void VIC_DummyI2C0 (void)
{
VIC_SpuriousInt = VIC_I2C0;
VIC_Dummy();
}
static void VIC_DummySPI (void)
{
VIC_SpuriousInt = VIC_SPI;
VIC_Dummy();
}
static void VIC_DummySSP1 (void)
{
VIC_SpuriousInt = VIC_SSP1;
VIC_Dummy();
}
static void VIC_DummyPLL (void)
{
VIC_SpuriousInt = VIC_PLL;
VIC_Dummy();
}
static void VIC_DummyRTC (void)
{
VIC_SpuriousInt = VIC_RTC;
VIC_Dummy();
}
static void VIC_DummyEINT0 (void)
{
VIC_SpuriousInt = VIC_EINT0;
VIC_Dummy();
}
static void VIC_DummyEINT1 (void)
{
VIC_SpuriousInt = VIC_EINT1;
VIC_Dummy();
}
static void VIC_DummyEINT2 (void)
{
VIC_SpuriousInt = VIC_EINT2;
VIC_Dummy();
}
static void VIC_DummyEINT3 (void)
{
VIC_SpuriousInt = VIC_EINT3;
VIC_Dummy();
}
static void VIC_DummyAD0 (void)
{
VIC_SpuriousInt = VIC_AD0;
VIC_Dummy();
}
static void VIC_DummyI2C1 (void)
{
VIC_SpuriousInt = VIC_I2C1;
VIC_Dummy();
}
static void VIC_DummyBOD (void)
{
VIC_SpuriousInt = VIC_BOD;
VIC_Dummy();
}
static void VIC_DummyETHERNET (void)
{
VIC_SpuriousInt = VIC_ETHERNET;
VIC_Dummy();
}
static void VIC_DummyUSB (void)
{
VIC_SpuriousInt = VIC_USB;
VIC_Dummy();
}
static void VIC_DummyCAN01 (void)
{
VIC_SpuriousInt = VIC_CAN01;
VIC_Dummy();
}
static void VIC_DummyMMC (void)
{
VIC_SpuriousInt = VIC_MMC;
VIC_Dummy();
}
static void VIC_DummyGP_DMA (void)
{
VIC_SpuriousInt = VIC_GP_DMA;
VIC_Dummy();
}
static void VIC_DummyTIMER2 (void)
{
VIC_SpuriousInt = VIC_TIMER2;
VIC_Dummy();
}
static void VIC_DummyTIMER3 (void)
{
VIC_SpuriousInt = VIC_TIMER3;
VIC_Dummy();
}
static void VIC_DummyUART2 (void)
{
VIC_SpuriousInt = VIC_UART2;
VIC_Dummy();
}
static void VIC_DummyUART3 (void)
{
VIC_SpuriousInt = VIC_UART3;
VIC_Dummy();
}
static void VIC_DummyI2C2 (void)
{
VIC_SpuriousInt = VIC_I2C2;
VIC_Dummy();
}
static void VIC_DummyI2S (void)
{
VIC_SpuriousInt = VIC_I2S;
VIC_Dummy();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -