我目前正在使用带通用异步收发器的PIC24,能够接收(Rx)和发送(Tx)字符。当尝试接收连续的字符流时,在开始位和停止位之间没有延迟时,问题就出现了。
UART设置为:7个数据位、1个奇偶校验位和1个1200波特率停止位
当在终端上显示接收到的字符时,它显示只有某些字符才能正确打印。我不认为这是一个波特率错误,因为我能够正确地接收和打印字符时,开始和停止位之间的小延迟,即按住键盘上的一个键。
为了读取连续发送的两个字符,我执行以下操作。
char buf[512];
while (U2STAbits.URXDA == 0); //wait while Rx buffer is full
buf[0] = U2RXREG;
while (U2STAbits.URXDA == 0); //wait while Rx buffer is full
buf[1] = U2RXREG;
while (U2STAbits.UTXBF); //wait while Tx Bit not free
U2TXREG = buf[0];
while (U2STAbits.UTXBF); //wait while Tx Bit not free
U2TXREG = buf[1];发布于 2019-09-11 14:18:35
可能还有其他我们看不到的问题,因为你只给了我们一小部分代码。
无论如何,在你的评论中有额外的信息,它在奇偶校验中是不匹配的:
字符接收正常:
char code binary # of 1-bits
'A' 0x41 01000001 2 = even
'f' 0x66 01100110 4 = even
'?' 0x3f 00111111 6 = even未收到字符:
char code binary # of 1-bits
'a' 0x61 01100001 3 = odd
'b' 0x62 01100010 3 = odd
'1' 0x31 00110001 3 = odd请在下一次,不要在评论中添加额外的信息,而是编辑您的问题。这样一来,所有的访问者都有了所有的信息,而不必费力地阅读所有的评论。
https://stackoverflow.com/questions/57867380
复制相似问题