标题:配置串口中断和引脚PG12中断,但只有PG12可以产生中断,而串口中断无法触发,但去掉PG12的中断配置,串口中断就正常了????
配置串口中断和引脚PG12中断,为什么只有PG12可以产生中断,而串口中断无法触发?
当把中断是初始化函数中的 PG12的中断配置语句去掉(红色字体),则串口会产生中断,但加上PG12的中断配置语句,串口的中断功能就没用了???
EX_INTERRUPT_HANDLER(UART1_ISR1) //串口中断函数
{
if(*pUART1_LSR&DR) //判断是否有新的数据。
{
if(cont>65) //防止buff溢出,测试代码,将接收到的数据重复写入512字节的buff
{
cont = 0;
}
RXbuf[cont]=*pUART1_RBR;
cont++;
}
}
EX_INTERRUPT_HANDLER(FlagA_ISR1) //PG12引脚中断函数
{
if((*pPORTGIO&PG12) == PG12)
z=1;
}
void Init_Interrupts(void) //中断初始化
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff; // UART 中断定义
*pSIC_IAR3 = 0xfffffff3; //中断源UART1 RX 中断等级IVG10,对应的值为3
register_handler(ik_ivg10, UART1_ISR1);
*pSIC_IMASK0 = 0x01000000; //使能中断, 中断源UART1 RX 在SIC_IMASK0上对应的是bit24位,即第25个
*pSIC_IAR5 = 0xfffffff5; //中断源PG12 中断等级IVG12,对应的值为5
register_handler(ik_ivg12, FlagA_ISR1);
*pSIC_IMASK1 = 0x00000100; //使能中断, 中断源PG 在SIC_IMASK1上对应的是bit8位,即第9个
}
「该帖子被 OpenADSP 在 2017-12-13 08:41:10 编辑过」