打印
[应用相关]

字符串不能连续显示

[复制链接]
270|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ousj|  楼主 | 2020-3-1 16:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了主机和从机的程序,两块107可以进行询问——应答方式的485通信,现在把程序移植到103上面,不行。我是用数组保存数据帧的,在数据帧发送或接收完成前板子时钟保持发送或接收的状态。标志位用到的是TXE和RXNE,通过中断方式。把运行过程的中间参数发送到串口调试助手上看,发现接收到的数据帧(其实是一个个的字母组成)中间出现大量空格,字符串不能连续显示,也有接收的字符与显示的不一致。 请问是什么原因?

使用特权

评论回复
沙发
ousj|  楼主 | 2020-3-1 16:49 | 只看该作者
跟两个芯片的时钟频率不一样有关吗?

使用特权

评论回复
板凳
ousj|  楼主 | 2020-3-1 16:58 | 只看该作者
但我感觉好像系统里面都是配置到72M的。  求解

使用特权

评论回复
地板
wangpe| | 2020-3-1 17:01 | 只看该作者
有没有检查波特率问题

使用特权

评论回复
5
huanghuac| | 2020-3-1 17:04 | 只看该作者

是不是移植过来时候没有修改?107和103有不同?

使用特权

评论回复
6
dingy| | 2020-3-1 17:08 | 只看该作者
最好先确认,简单的办法是借用PC来观察,如果确认波特率没有问题,那么进一步分析是否因为内存容量的变化导致了冲突,看编译后的lst文件即可获知。

使用特权

评论回复
7
pangb| | 2020-3-1 17:10 | 只看该作者
仿真器,数据接得怎么样的,时钟 波特率什么的不看得一清二楚么

使用特权

评论回复
8
guoyt| | 2020-3-1 17:17 | 只看该作者

两个的参数不一样,是不是相关要修改的没有全改对。

使用特权

评论回复
9
yufe| | 2020-3-1 17:20 | 只看该作者

用串口调试助手调试

使用特权

评论回复
10
gongche| | 2020-3-1 17:29 | 只看该作者
对比一下寄存器

使用特权

评论回复
11
wenfen| | 2020-3-1 17:34 | 只看该作者
在中断后面设断点,第一个都正确了,那后面的只关系到一些细节问题了

使用特权

评论回复
12
xxrs| | 2020-3-1 17:37 | 只看该作者
USART_ITConfig(USART3,USART_IT_RXNE,DISABLE);了
结束了又没打开,只能收到一个字节
另外你在RxBuffer[RxCounter++] = RxChar ; 前面加多一句长度判断吧counter的超长判断。
如果你这样写
RxChar = USART_ReceiveData(USART3);
RS232_SendData(RxChar);
你很容易就发现立即收发很容易出问题,一旦出问题了只能下电,下一次上电还未必能正常。我建议中间加多两到三条指令做为一个时间缓冲。我估计读出这个数据它是需要几个机器周期的,毕竟串口也慢,加几句话到中间占个读取时间。

使用特权

评论回复
13
yklstudent| | 2020-3-1 17:38 | 只看该作者
软件问题。。。

使用特权

评论回复
14
ousj|  楼主 | 2020-3-1 17:49 | 只看该作者

好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

712

主题

7557

帖子

1

粉丝