//#####################################################################
//文件: DSP281x_PieVect.c
//說(shuō)明: DSP281x 芯片 PIE 中斷向量表初始化程序
//#####################################################################
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
const struct PIE_VECT_TABLE PieVectTableInit = {
//定義一個(gè)結(jié)構(gòu)體類型PIE_VECT_TABLE的結(jié)構(gòu)體變量PieVectTableInit,并給元素賦初
//值,其元素初值為其對(duì)應(yīng)的默認(rèn)中斷向量服務(wù)程序的起始地址(函數(shù)名)
//在DSP281x_DefaultIsr.c里面都有定義
PIE_RESERVED, //保留,復(fù)位總是取自BROM或XINTF7區(qū)的0x3F FFC0
PIE_RESERVED, //保留,見(jiàn)PIE組1
PIE_RESERVED, //保留,見(jiàn)PIE組2
PIE_RESERVED, //保留,見(jiàn)PIE組3
PIE_RESERVED, //保留,見(jiàn)PIE組4
PIE_RESERVED, //保留,見(jiàn)PIE組5
PIE_RESERVED, //保留,見(jiàn)PIE組6
PIE_RESERVED, //保留,見(jiàn)PIE組7
PIE_RESERVED, //保留,見(jiàn)PIE組8
PIE_RESERVED, //保留,見(jiàn)PIE組9
PIE_RESERVED, //保留,見(jiàn)PIE組10
PIE_RESERVED, //保留,見(jiàn)PIE組11
PIE_RESERVED, //保留,見(jiàn)PIE組12
//非外設(shè)中斷
INT13_ISR, //XINT13(外部中斷13) 或CPU-Timer 1(用BIOS或RTOS)
INT14_ISR, //CPU-Timer2
DATALOG_ISR, //CPU數(shù)據(jù)記錄中斷
RTOSINT_ISR, //CPU實(shí)時(shí)操作系統(tǒng)中斷
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中斷向量表
//這個(gè)子程序把PIE中斷向量表初始化到一個(gè)已知狀態(tài),這個(gè)子程序必須在引導(dǎo)程序后執(zhí)行
void InitPieVectTable(void)
{
int16 i;
Uint32 *Source = (void *) &PieVectTableInit;
Uint32 *Dest = (void *) &PieVectTable;
//將結(jié)構(gòu)體變量PieVectTableInit的值賦給結(jié)構(gòu)體變量PieVectTable
//注意:兩個(gè)為同一個(gè)結(jié)構(gòu)體類型PIE_VECT_TABLE
EALLOW;
for(i=0; i < 128; i++)
*Dest++ = *Source++;
EDIS;
//使能PIE中斷向量表
PieCtrlRegs.PIECRTL.bit.ENPIE = 1;
}