周立功单片有限公司工程师 你好,我在用SmartArm开发板做 smartarm2200《ARM嵌入式系统实验教程二》217UART实验2三个重大问题!经求助本地周立功单片机的分公司无果,故在这里请教,对于这两个问题我看了很久的书和PPT都没有答案所以在这里发帖求助下。希望得到你们的技术支持 1,查询数据是否发送完毕的这条程序 你们的原程序是while((U0LSR&0x20)==0) 我改成while((U0LSR&0x40)==0)后经调试后也能达到跟上面一句相同的效果,所以我向问下这两句的区别,还有什么时候用while((U0LSR&0x20)==0),什么时候用while((U0LSR&0x40)==0),什么时候两句都可以用 2,下面这个问题才是最重要的 void __irq IRQ_UART0(void) { uint8 i; if((U0IIR&0x0f)==0x04) rcv_new=1; for(i=0;i<8;i++) { rcv_buf=U0RBR; } } 根据贵公司的教学PPT和结合教程的理解,发生RDA中断时候,将读取U0RBR里面的数据走,因为读取走了一个数据,没有到达我们设置的8个字节的触发点,所以在读完第一次的U0RBR的时候,中断就应该不会执行了,所以想问的是这8 BYTE的数据到底是怎么读出来的? 是根据8次RDA中断读出来的(每次中断读1BYTE)还是1次RDA中断读出来的(一次性读8BYTE)? 这问题困扰我很久了,请帮助我,谢谢。
|