OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3492|回复: 9

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

[复制链接]

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
发表于 2017-11-3 10:03:23 | 显示全部楼层 |阅读模式
5金钱
小弟近日在做项目涉及到将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\r\n",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\r\n",USART2_RX_BUF);
                                USART2_RX_STA=0;
                        }
                else
                {
                        times++;
                        if(times%80==0)LED0=!LED0;
                        delay_ms(10);   
                }

                          
        }

通讯板源码.rar (2.22 MB, 下载次数: 184)

最佳答案

查看完整内容[请看2#楼]

参考这里:http://www.openedv.com/forum.php?mod=viewthread&tid=109577&extra=page%3D1 你这种方式,不靠谱的,一定要以运动的思维来解决实际问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-3 10:03:24 | 显示全部楼层
参考这里:http://www.openedv.com/forum.php ... &extra=page%3D1
你这种方式,不靠谱的,一定要以运动的思维来解决实际问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2014-7-1
在线时间
76 小时
发表于 2017-11-3 10:26:19 | 显示全部楼层
试试用不同的波特率
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2017-11-3 11:46:52 | 显示全部楼层
你这是一个芯片还是2个芯片进行232串口通讯,一个串口进行多方通讯需要外接硬件吧!!
回复

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2017-11-3 12:02:31 | 显示全部楼层
大瓶子凌凌漆 发表于 2017-11-3 11:46
你这是一个芯片还是2个芯片进行232串口通讯,一个串口进行多方通讯需要外接硬件吧!!

是同一个芯片,如果usart1接到数据发到usart2,如果USArt2接到转发到usart1
回复

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2017-11-3 12:03:11 | 显示全部楼层
shirl 发表于 2017-11-3 10:26
试试用不同的波特率

不同的波特率下都有这个问题的
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2017-11-3 14:26:41 | 显示全部楼层
本帖最后由 大瓶子凌凌漆 于 2017-11-3 14:29 编辑
Nemesis 发表于 2017-11-3 12:02
是同一个芯片,如果usart1接到数据发到usart2,如果USArt2接到转发到usart1

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

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-11-3 17:05:09 | 显示全部楼层
yklstudent 发表于 2017-11-3 14:37
楼主这是要搞透传?
这个功能很简单:
1、USART1中断接收直接通过USART2发送出去;

我也是这样理解的.难道理解错落.
自己选择的路,成家前走完。
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-7-1
在线时间
32 小时
发表于 2017-11-3 17:27:36 | 显示全部楼层
与中断等级设置有没有关系?
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2017-11-10
在线时间
46 小时
发表于 2017-11-10 17:09:19 | 显示全部楼层
我最近做的也是类似的东西,不过我的是吧串口2.3转发串口1把1转发2.3。一个是直接转发,你在串口1中断服务函数结尾直接发送收到的数据就可以。另外也可以先把收到的数据存在数组再发送。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 20:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表