中断的配置是与PIE模块的响应机制完全对应的。
对外部中断 XINT1进行配置。
第一步:
基础的初始化之后,对PIE模块进行指定,一般在InitPieVectTable();PIE模块初始化之后进行指定。
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.XINT1 = &xint1_isr;
EDIS;
}
第二步:
打开PIE模块的时钟,经过查询中断向量表知道,外部中断XINT1在使能在INT1.4,打开这个中断使能。
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.XINT1 = &xint1_isr; //赋予中断地址
EDIS;
IER |= M_INT1; //全局使能INT1
PieCtrlRegs.PIEIER1.bit.INTx4 = 1; //使能INT1.4
EINT;
ERTM;
}
当时我疑惑这个PIEIFR标志位置1去哪里了,其实中断响应的时候它是自动置1的。我们只要开使能使他能够顺利通过就好。
第三步:
就是在我们的中断里面写函数,并在中断里面清楚中断响应标志位PIEACK。
interrupt void xint1_isr(void)
{
Xint1Count++;
GpioDataRegs.GPACLEAR.all = 0x4;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
|