关于stm32107和103的rs485通信

2019-03-23 19:36发布

写了主机和从机的程序,两块107可以进行询问——应答方式的485通信,现在把程序移植到103上面,不行。我是用数组保存数据帧的,在数据帧发送或接收完成前板子时钟保持发送或接收的状态。标志位用到的是TXE和RXNE,通过中断方式。把运行过程的中间参数发送到串口调试助手上看,发现接收到的数据帧(其实是一个个的字母组成)中间出现大量空格,字符串不能连续显示,也有接收的字符与显示的不一致。 请问是什么原因?跟两个芯片的时钟频率不一样有关吗?但我感觉好像系统里面都是配置到72M的。  求解,求解。。。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
chunyang
1楼-- · 2019-03-23 23:49
 精彩回答 2  元偷偷看……
731955123
2楼-- · 2019-03-24 00:49
都是9600,之前是在两块107的板上试过的程序,直接移植过来的
chunyang
3楼-- · 2019-03-24 03:37
最好先确认,简单的办法是借用PC来观察,如果确认波特率没有问题,那么进一步分析是否因为内存容量的变化导致了冲突,看编译后的lst文件即可获知。
虚V界
4楼-- · 2019-03-24 05:19
 精彩回答 2  元偷偷看……
731955123
5楼-- · 2019-03-24 06:26
哈哈,不知道是不是跟你说的情况一样。我定义的缓冲区数组是RxBuffer[RxCounter],RxCounter是自增的,正常接收的话RxCounter在收完一个数据帧后数值为9,实际上却变为了47,调试助手显示字符串中间出现很多来历无从考究的空格。但我在每次的接收中断里把刚接收到的字符用串口在调试助手上显示出来发现跟发送的又竟然一致。 所以不知道RxCounter=47和那些空格是怎么来的。
731955123
6楼-- · 2019-03-24 07:47
就是用串口调试助手。。

一周热门 更多>