(1)禁止CPU中断,初始化PIE中断控制寄存器和PIE中断向量表
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl();
InitPieVectTable();
(2)使能GPIO时钟,配置GPIO为输入
(3)设置GPIO与中断线的映射关系
GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 12; //XINT1是GPIO12
(4)指定中断向量表中断服务函数地址
PieVectTable.XINT1 = &EXTI1_IRQn;
(5)使能外部中断、设置外部中断触发方式
XIntruptRegs.XINT1CR.bit.ENABLE= 1; //使能XINT1
XIntruptRegs.XINT1CR.bit.POLARITY = 0; //下降沿触发中断
(6)使能外设对应的PIE中断
PieCtrlRegs.PIEIER1.bit.INTx4 = 1; //使能PIE组1的INT4,比如外部中断1,它是由PIE组1的第4通道连接
(7)使能CPU中断及全局中断
IER |= M_INT1; //使能CPU中断1(INT1)
EINT; //使能全局中断
ERTM; //当使用仿真器调试时可开启DEBUG中断
(8)编写外部中断服务函数,并清除PIEACK
//例如,外部中断1的中断服务函数
interrupt void EXTI1_IRQn(void)
{
……功能程序
PieCtrlRegs.PIEACK.bit.ACK1=1; /*清除PIEACK1,在中断执行结束前要清除相应的中断标志位,
以等待下次中断的到来。*/
}