接口寄存器说明
SIC_IARx:中断等级设置寄存器
SIC_IMASKx:中断屏蔽寄存器
源码分析
PF 口设置使用外部中断:
*pPORTF_FER &= ~(PF1|PF0); //配置PF0 和PF1 管脚为IO 功能
*pPORTFIO_DIR &= ~(PF1|PF0); //配置PF0 和PF1 管脚为输入
*pPORTFIO_INEN |= (PF1|PF0); //配置PF0 和PF1 管脚输入使能
*pPORTFIO_EDGE |= (PF1|PF0) ; //配置为沿触发模式
*pPORTFIO_POLAR |= (PF1|PF0); //配置为下降沿触发
*pPORTFIO_MASKA_SET |= (PF1|PF0); //中断源采用Port F interrupt A
配置外部中断:
iar5 |= 0x00060000;
iar5 &= 0xfff6ffff;
*pSIC_IAR5 = iar5; //配置中断等级
register_handler(ik_ivg13, FlagA_ISR); //注册中断
imask1 = *pSIC_IMASK1;
imask1 |= 0x00002000;
*pSIC_IMASK1 = imask1; //使能中断
中断函数:
EX_INTERRUPT_HANDLER(FlagA_ISR) //设置中断函数标志为FlagA_ISR
{
if((*pPORTFIO&PF0) == PF0) //判断中断管脚
{
printf("interrupt is PF0!\n");
}
else if((*pPORTFIO&PF1) == PF1) //判断中断管脚
{
printf("interrupt is PF1!\n");
}
*pPORTFIO_CLEAR = PF1|PF0; //清除中断
}