This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于例程里将中断向量表初始化为已知状态的问题

void InitPieVectTable(void)
{
int16 i;
Uint32 *Source = (void *) &PieVectTableInit;
Uint32 *Dest = (void *) &PieVectTable;

// Do not write over first 3 32-bit locations (these locations are
// initialized by Boot ROM with boot variables)

Source = Source + 3;
Dest = Dest + 3;

EALLOW;
for(i=0; i < 125; i++)
*Dest++ = *Source++;
EDIS;

// Enable the PIE Vector Table
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;

}

例程中在DSP2803x_GlobalVariableDefs.c中定义了:struct PIE_VECT_TABLE PieVectTable;

又在DSP2803x_PieVect.c中定义了:

const struct PIE_VECT_TABLE PieVectTableInit = {

PIE_RESERVED, // 0 Reserved space
PIE_RESERVED, // 1 Reserved space
PIE_RESERVED, // 2 Reserved space
PIE_RESERVED, // 3 Reserved space
PIE_RESERVED, // 4 Reserved space
PIE_RESERVED, // 5 Reserved space
PIE_RESERVED, // 6 Reserved space
PIE_RESERVED, // 7 Reserved space
PIE_RESERVED, // 8 Reserved space
PIE_RESERVED, // 9 Reserved space
PIE_RESERVED, // 10 Reserved space
PIE_RESERVED, // 11 Reserved space
PIE_RESERVED, // 12 Reserved space

……………………

// Group 12 PIE Vectors
XINT3_ISR, // 12.1 External Interrupt
rsvd_ISR, // 12.2
rsvd_ISR, // 12.3
rsvd_ISR, // 12.4
rsvd_ISR, // 12.5
rsvd_ISR, // 12.6
LVF_ISR, // 12.7 CLA1
LUF_ISR // 12.8 CLA1
};

这个结构体中保存的是相应中断函数的入口地址,我的问题是为什么要通过InitPieVectTable()这个函数将结构地址PIE_VECT_TableInit中的值赋给PieVectTable,而不是直接将中断函数的入口地址赋给PieVectTable?