len = UART1_RecvString(RxBuff);
if(len)
{
PRINT("RECV_OK");
UART1_SendString(RxBuff, len);
}
这个代码 下载后,可以每次都转发收到得数据,但是print不会执行输出,并且在反复转发十几遍后会连续打印出来几十个print得字符串就是“recv_ok”,请问是不是库函数得问题,要如何解决
2022-9-19 11:57:08
使用默认的工程配置,需要在PRINT字符串后面加一个‘n’才显示,比如这样写PRINT("RECV_OKn");
使用默认的工程配置,需要在PRINT字符串后面加一个‘n’才显示,比如这样写PRINT("RECV_OKn");
举报
2022-9-19 11:57:18
您好,R8_UART1_RFC在收到第一个字节数据的时已经置为了1,在没有占用串口PRINT的情况下,在下一个字节收到之前就已经处理完了这1个字节数据,等待下个字节,也就是说会逐个字节处理。PRINT打印“recv-ok”需要一段时间,这段时间刚好够接收接下来的3个字节,故出现以上现象。
建议使用串口中断,FIFO设置字节触发可以避免逐个字节处理。非要用查询的话也可以自行添加逻辑,比如说R8_UART1_RFC小于n时就不接收BRB中的数据,若一直小于n超过自定义时长后,就判断为超时,全部接收。
您好,R8_UART1_RFC在收到第一个字节数据的时已经置为了1,在没有占用串口PRINT的情况下,在下一个字节收到之前就已经处理完了这1个字节数据,等待下个字节,也就是说会逐个字节处理。PRINT打印“recv-ok”需要一段时间,这段时间刚好够接收接下来的3个字节,故出现以上现象。
建议使用串口中断,FIFO设置字节触发可以避免逐个字节处理。非要用查询的话也可以自行添加逻辑,比如说R8_UART1_RFC小于n时就不接收BRB中的数据,若一直小于n超过自定义时长后,就判断为超时,全部接收。
举报