[STM32F1] 2块stm32的串口使用max485通讯,发现数据错位

[复制链接]
 楼主| yyh1910 发表于 2014-4-22 17:32 | 显示全部楼层 |阅读模式
很奇怪的问题,2块stm32usart3通过max458通讯。一个一直发另一个一直接收,接收到的数据总数错位,数据内容是正确的,只有按键复位接收的stm32,接收数据的顺序才正常。发送的stm32通过明华的485转232在串口调试工具看过,发送的数据顺序和内同都正确的
mmuuss586 发表于 2014-4-22 17:37 | 显示全部楼层
那说明接收程序没处理好,是不是收到第1个数据,变成发送的第2个数据?
通讯协议上好好理下,容易解决的。
airwill 发表于 2014-4-22 22:12 | 显示全部楼层
应该是接受中断服务的问题, 注意, USART 的 接收寄存器是双缓冲的。可以在开始接收前通过多一次读数据寄存器, 清空接收缓冲。
zcl143 发表于 2014-4-23 00:19 | 显示全部楼层
感觉可能是缓冲的问题,楼主没有详细的说明按键复位后是接收到的的单个数据包正常吗。如果是这样那应该就是楼上说的原因
 楼主| yyh1910 发表于 2014-4-23 08:46 | 显示全部楼层
airwill 发表于 2014-4-22 22:12
应该是接受中断服务的问题, 注意, USART 的 接收寄存器是双缓冲的。可以在开始接收前通过多一次读数据寄 ...

开始接收前多读一次usart->dr,是指在初始化后读一次还是中断前读一次
b335002090 发表于 2014-4-23 10:09 | 显示全部楼层
注意RS485的使能端信号控制,在发送完后就把使能端职位为接收状态。建议你从使能端方面去看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

96

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

48

主题

96

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部