求助关于串口1串口2之间互相转发数据乱码的问题

2019-07-25 12:07发布

小弟近日在做项目涉及到将usart1端接收的数据向usart2发送并将usart2端的命令向usart1端转发。目前使用的芯片是STM32F103C8T6,代码是在原子哥的教程源码的基础上修改而来。稍后会在下方贴出。当前的问题是在测试过程中会发生一段时间后(具体时长不得而知)数据格式乱码的问题如下图所示(指令内容本为1,down)。自行检查无果,特附上源码前来寻求帮助。还请懂得小伙伴们不吝赐教。
现象:
无标题.png

消息互传部分的代码如下:

while(1)
        {
                if(USART_RX_STA&0x8000)
                        {                                          
                                len=USART_RX_STA&0X3FFF;       
                                USART_RX_BUF[len]=0;               
                                u2_printf("%s ",USART_RX_BUF);       
                                USART_RX_STA=0;
                                //USART_RX_BUF[]={0};
                        }
                else if(USART2_RX_STA&0X8000)               
                        {
                                rlen=USART2_RX_STA&0X7FFF;       
                                USART2_RX_BUF[rlen]=0;               
                                printf("%s ",USART2_RX_BUF);
                                USART2_RX_STA=0;
                        }
                else
                {
                        times++;
                        if(times%80==0)LED0=!LED0;
                        delay_ms(10);   
                }

                          
        }

通讯板源码.rar (2.22 MB, 下载次数: 168) 2017-11-3 10:00 上传 点击文件名下载附件
源码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
正点原子
1楼-- · 2019-07-25 12:15
参考这里:http://www.openedv.com/forum.php ... &extra=page%3D1
你这种方式,不靠谱的,一定要以运动的思维来解决实际问题。
shirl
2楼-- · 2019-07-25 14:52
试试用不同的波特率
大瓶子凌凌漆
3楼-- · 2019-07-25 15:27
你这是一个芯片还是2个芯片进行232串口通讯,一个串口进行多方通讯需要外接硬件吧!!
Nemesis
4楼-- · 2019-07-25 18:47
 精彩回答 2  元偷偷看……
Nemesis
5楼-- · 2019-07-26 00:05
shirl 发表于 2017-11-3 10:26
试试用不同的波特率

不同的波特率下都有这个问题的
大瓶子凌凌漆
6楼-- · 2019-07-26 05:12
本帖最后由 大瓶子凌凌漆 于 2017-11-3 14:29 编辑
Nemesis 发表于 2017-11-3 12:02
是同一个芯片,如果usart1接到数据发到usart2,如果USArt2接到转发到usart1

同一个芯片这种我没试过,一发多收应该是可以的

一周热门 更多>