//#####################################################################
//文件: DSP281x_PieVect.c
//说明: DSP281x 芯片 PIE 中断向量表初始化程序
//#####################################################################
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
const struct PIE_VECT_TABLE PieVectTableInit = {
//定义一个结构体类型PIE_VECT_TABLE的结构体变量PieVectTableInit,并给元素赋初
//值,其元素初值为其对应的默认中断向量服务程序的起始地址(函数名)
//在DSP281x_DefaultIsr.c里面都有定义
PIE_RESERVED, //保留,复位总是取自BROM或XINTF7区的0x3F FFC0
PIE_RESERVED, //保留,见PIE组1
PIE_RESERVED, //保留,见PIE组2
PIE_RESERVED, //保留,见PIE组3
PIE_RESERVED, //保留,见PIE组4
PIE_RESERVED, //保留,见PIE组5
PIE_RESERVED, //保留,见PIE组6
PIE_RESERVED, //保留,见PIE组7
PIE_RESERVED, //保留,见PIE组8
PIE_RESERVED, //保留,见PIE组9
PIE_RESERVED, //保留,见PIE组10
PIE_RESERVED, //保留,见PIE组11
PIE_RESERVED, //保留,见PIE组12
//非外设中断
INT13_ISR, //XINT13(外部中断13) 或CPU-Timer 1(用BIOS或RTOS)
INT14_ISR, //CPU-Timer2
DATALOG_ISR, //CPU数据记录中断
RTOSINT_ISR, //CPU实时操作系统中断
EMUINT_ISR, //CPU仿真中断
NMI_ISR, //外部不可屏蔽中断
ILLEGAL_ISR, //非法操作陷阱
USER1_ISR, //用户定义软件中断1
USER2_ISR, //用户定义软件中断2
USER3_ISR, //用户定义软件中断3
USER4_ISR, //用户定义软件中断4
USER5_ISR, //用户定义软件中断5
USER6_ISR, //用户定义软件中断6
USER7_ISR, //用户定义软件中断7
USER8_ISR, //用户定义软件中断8
USER9_ISR, //用户定义软件中断9
USER10_ISR, //用户定义软件中断10
USER11_ISR, //用户定义软件中断11
USER12_ISR, //用户定义软件中断12
//PIE组1
PDPINTA_ISR, //EV-A
PDPINTB_ISR, //EV-B
rsvd_ISR,
XINT1_ISR,
XINT2_ISR,
ADCINT_ISR, //ADC
TINT0_ISR, //Timer 0
WAKEINT_ISR, //WD
//PIE组2
CMP1INT_ISR, //EV-A
CMP2INT_ISR, //EV-A
CMP3INT_ISR, //EV-A
T1PINT_ISR, //EV-A
T1CINT_ISR, //EV-A
T1UFINT_ISR, //EV-A
T1OFINT_ISR, //EV-A
rsvd_ISR,
//PIE组3
T2PINT_ISR, //EV-A
T2CINT_ISR, //EV-A
T2UFINT_ISR, //EV-A
T2OFINT_ISR, //EV-A
CAPINT1_ISR, //EV-A
CAPINT2_ISR, //EV-A
CAPINT3_ISR, //EV-A
rsvd_ISR,
//PIE组4
CMP4INT_ISR, //EV-B
CMP5INT_ISR, //EV-B
CMP6INT_ISR, //EV-B
T3PINT_ISR, //EV-B
T3CINT_ISR, //EV-B
T3UFINT_ISR, //EV-B
T3OFINT_ISR, //EV-B
rsvd_ISR,
//PIE组5
T4PINT_ISR, //EV-B
T4CINT_ISR, //EV-B
T4UFINT_ISR, //EV-B
T4OFINT_ISR, //EV-B
CAPINT4_ISR, //EV-B
CAPINT5_ISR, //EV-B
CAPINT6_ISR, //EV-B
rsvd_ISR,
//PIE组6
SPIRXINTA_ISR, //SPI-A
SPITXINTA_ISR, //SPI-A
rsvd_ISR,
rsvd_ISR,
MRINTA_ISR, //McBSP-A
MXINTA_ISR, //McBSP-A
rsvd_ISR,
rsvd_ISR,
//PIE组7
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
//PIE组8
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
//PIE组9
SCIRXINTA_ISR, //SCI-A
SCITXINTA_ISR, //SCI-A
SCIRXINTB_ISR, //SCI-B
SCITXINTB_ISR, //SCI-B
ECAN0INTA_ISR, //eCAN
ECAN1INTA_ISR, //eCAN
rsvd_ISR,
rsvd_ISR,
//PIE组10
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
//PIE组11
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
//PIE组12
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
rsvd_ISR,
};
//初始化PIE中断向量表
//这个子程序把PIE中断向量表初始化到一个已知状态,这个子程序必须在引导程序后执行
void InitPieVectTable(void)
{
int16 i;
Uint32 *Source = (void *) &PieVectTableInit;
Uint32 *Dest = (void *) &PieVectTable;
//将结构体变量PieVectTableInit的值赋给结构体变量PieVectTable
//注意:两个为同一个结构体类型PIE_VECT_TABLE
EALLOW;
for(i=0; i < 128; i++)
*Dest++ = *Source++;
EDIS;
//使能PIE中断向量表
PieCtrlRegs.PIECRTL.bit.ENPIE = 1;
}