使用串口UART0接收上位机发送的数据,当有数据准备接收时,进入接收中断程序 1,关向量中断 2,是接收中断,接收第一字节为数据长度 3,是否还有数据待接收,如果有中断寄存器职位但不触发向量中断,保存数据 4,如果接收数据长度正确,则设置接收到数据标志 5,向上位机发送答复值(不使用发送中断) 通讯波特率9600,8位数据位,1位停止位,无奇偶校验,不使用FIFO 请问这样的接收中断程序能不能实现正确的数据接收。 void __irq IRQ_UART0(void) { uint8 len; uint8 i; uint8 clru; uint32 j=0; VICIntEnClr = 0x00000040; //禁止向量中断 if(0x04==(U0IIR&0x0E)) { len=U0RBR; //接收数据长度 for(i=0;i<len;i++) { while(!((U0IIR&0xfb)==0)) //是否还有数据 { j++; if(j>50000) { break; } } if(j<50000) { RevBuffer=U0RBR; j=0; } else { break; } } if(i==len) { CmdValid=1; } }
VICVectAddr = 0x00;// 中断处理结束 } |