野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 29709|回复: 3

stm32f103单片机串口连续发送多字节程序求助

[复制链接]

发表于 2021-5-6 16:14:18 | 显示全部楼层 |阅读模式
本帖最后由 liuliangdt 于 2021-5-6 16:53 编辑

stm32f103单片机做通信控制,发送的数据总是不对。抄了网上各种发送程序,禁止编译器优化等都试遍了。实在不知道错在哪里,请网友帮忙指教。比如说我要发送的数据:0x5a  0xa5  0x03  0x10  0x20  0x30  ;
上面0x5a  0xa5是帧头,0x03是后面要发送的数据量(这里是3个), 0x10  0x20  0x30  就是要发送的数据了。
下面的图片是我试着从发送一个字节到发送7个字节时收到了数据截图,好给大伙分析;
最先发送一个字节,是外围接了一个按钮,按一次发送一次。
图9.jpg


发送一个字节后串口助手接收到正确的数据
图10.jpg


从一次发送两个字节开始接收就不对了
图11.jpg


第一次按按钮,接收到的是0x5a。没错,第一次只能收到一个字节,按道理应该接收到0x5a  0xa5。从第二次开始接收到的数据时0xa5  0x5a,这是一次收到了两个字节但反了顺序。不知道程序错在哪里,求指点!
图12.jpg


后面是发送3个字节
图13.jpg


没让我失望,接收的还是2个字节。但从这里开始,接收到的都已经不是原来发送了的数据了。发送的0x5a  0xa5  0x03已经变成了0x5a  0x3f两个字节了。
图14.jpg

后面的我也懒得打字了,都是少了一个字节。0xa5  0x03 都变成了 0x3f。
图15.jpg

图16.jpg

图17.jpg

图18.jpg

图19.jpg

图20.jpg

图21.jpg

图22.jpg

请大神们帮我分析一下问题出在哪里了?
回复

使用道具 举报

 楼主| 发表于 2021-5-6 16:14:41 | 显示全部楼层

求一份可以一次正确发送多字节的程序范例,稍微改一下还能发送MODBUS协议的多字节程序。
回复 支持 反对

使用道具 举报

发表于 2021-5-7 09:02:44 | 显示全部楼层
for里面改成
Usart_SendData
while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-9 09:21:26 | 显示全部楼层
还有梦与你 发表于 2021-5-7 09:02
for里面改成
Usart_SendData
while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);

谢谢!这个方法我试过了,效果跟现在一样的。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 18:01 , Processed in 0.029764 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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