keil下通过uart中断接收串口数据,急急急。。。
程序运行的时候,通过串口调试助手往串口发数据,下位机程序没有触发串口中断,应该怎么写哦,高手指点一下,最好有个实例。。。
下面是我定义的uart0中断处理程序
- C/C++ code
/***************************************************************************** 名称:IRQ_UART0()* 功能:串口UART0接收中断。* 入口参数:无* 出口参数:无****************************************************************************/void IRQ_UART0(void) __irq{ uint8 i; switch(U0IIR&0x0F) { case 0x04: {// for(i=0;i<8;i++) while((U0LSR&0x01) == 1) { insertQue(&buffer,U0RBR); //将接收的数据存储在队列中 } } break; case 0x0c: { while((U0LSR&0x01) == 1) { insertQue(&buffer,U0RBR); } } break; default: break; } VICVectAddr = 0x00; // 中断处理结束}
------解决方案--------------------
你这个应该是MDK的吧?没有进入串口中断,确定两个问题,一是软件:开中断了没有?中断向量设置对了没?是否有更高优先级的中断,经常性中断。二是硬件,232工作正常不?串口连接正常不?
其实没进入中断函数,那么你的中断函数里面实现什么,就都不用看了,进入了中断再说,呵呵
------解决方案--------------------
这就看你是什么ARM了。像我现在用的cortexm3的话
startup.s 是用来设置中断向量表及其中断服务函数地址的。
中断向量地址和中断函数地址相关联了之后,再开串口中断,应该就能进入了,呵呵,具体的代码里面,我就帮不上忙了,呵呵!
------解决方案--------------------
中断中尽量不要用到WHILE