void Uart0_Exception(void)
{
uint8 i;
if ((U0IIR & 0x0F) == 0x04)
{
rcv_new0 = 1; // 设置接收到新的数据标志
for (i=0; i<8; i++)
{
Rx_buf0[i] = U0RBR; // 读取FIFO的数据,并清除中断
}
}
VICVectAddr = 0x00; // 中断处理结束
}
上面是 中断服务子程序。
我在UC/OS2中一个任务里加上以下代码:
if(rcv_new0 == 1)
{
UART0_Printf("\r\nBBBBB\r\n");
rcv_new0 = 0;
}
然后,我用串口调试工具给ARM板发了个数据,结果是系统死了。当然,串口没有 输出过 BBBBB
什么原因啊? 在UC/OS2 中 写中断,有其他需要注意的吗?
------解决方案--------------------
没有清UART接收中断标志位,导致中断连续触发,然后系统就死掉了.