多谢大家指点!目前已经实现了我想要的功能,但是还存在疑惑。
我在一个无限循环里检测UART串口的LSR寄存器,以检测FIFO中是否有数据,如下:复制内容到剪贴板 代码:while(1) {
if(LSR & 0x01 == 0x01) {
CMD[0] = RHX & 0xff;
CMD[1] = RHX & 0xff;
CMD[2] = RHX & 0xff;
}
} 就可以读取这三个字节。目前运行良好。但是奇怪的是即使每次多读机个字节,仍然能读出东西来,并且可以执行两次{}里的语句,例如:复制内容到剪贴板 代码:while(1) {
if(LSR & 0x01 == 0x01) {
CMD[0] = RHX & 0xff;
CMD[1] = RHX & 0xff;
CMD[2] = RHX & 0xff;
CMD[3] = RHX & 0xff;
CMD[4] = RHX & 0xff;
CMD[5] = RHX & 0xff;
}
} 一次按键之后,会执行两次if{}里的读取,也就是说一共读出来12个字节。其中有效的3个字节仍然在,剩下的就不明白是什么东西了 |