找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1218|回复: 8
收起左侧

关于STM32单片机串口数据丢失问题

[复制链接]
ID:885416 发表于 2022-2-23 16:24 来自手机 | 显示全部楼层 |阅读模式
用stm32串口驱动esp8266at指令都是正常的,到透传那,要给服务器发送连接报文,就是发送100多个字节,结果每次发送第一个字节数据都会丢失,看了下网上都是硬件复位第一个字节丢失,我这是发送大量字节,第一个字节丢失,前面at指令的一系列都正常
回复

使用道具 举报

ID:885416 发表于 2022-2-23 17:55 来自手机 | 显示全部楼层
我发送是会等待或者检查标志位的
回复

使用道具 举报

ID:885416 发表于 2022-2-23 18:56 来自手机 | 显示全部楼层
找到原因了{}
回复

使用道具 举报

ID:885416 发表于 2022-2-23 18:58 来自手机 | 显示全部楼层
找到原因了,临时变量的初试值不是0,导致发送函数,一直是从第二个字节开始发送的,不是从第一个字节发送,太离谱了,我在发送子函数里int i,发送buff[i].结果i的初值不是0,真的晕死,int i,i的初始值不是0吗,太逆天了
回复

使用道具 举报

ID:624769 发表于 2022-2-23 19:15 来自手机 | 显示全部楼层
azjdly 发表于 2022-2-23 18:58
找到原因了,临时变量的初试值不是0,导致发送函数,一直是从第二个字节开始发送的,不是从第一个字节发送 ...

临时变量的初值可以是任意值,因为是别的程序用完后刚刚释放出来的,里面的值是不会清除的。
回复

使用道具 举报

ID:885416 发表于 2022-2-23 19:19 来自手机 | 显示全部楼层
188610329 发表于 2022-2-23 19:15
临时变量的初值可以是任意值,因为是别的程序用完后刚刚释放出来的,里面的值是不会清除的。

主要是这个发送函数是另一个工程里拷出来的,以前那个用一点事也没事,赶巧了,那个工程里临时变量值是0
回复

使用道具 举报

ID:624769 发表于 2022-2-23 19:42 来自手机 | 显示全部楼层
azjdly 发表于 2022-2-23 19:19
主要是这个发送函数是另一个工程里拷出来的,以前那个用一点事也没事,赶巧了,那个工程里临时变量值是0

所谓临时变量,就是若干函数共用同一个地址的内存,根据不同的程序,同样一个函数,在这和项目里可能和别的函数合用,在另一个函数里可能就独用了,我写代码时喜欢把需要初值0的临时变量,和倒计数的临时变量共用,因为倒计数完了一定是0,那么就不用初值赋0了。
回复

使用道具 举报

ID:311903 发表于 2022-2-23 19:47 | 显示全部楼层
定义临时变量,先赋值个初值,养成这个习惯
回复

使用道具 举报

ID:885416 发表于 2022-2-23 19:48 来自手机 | 显示全部楼层
188610329 发表于 2022-2-23 19:42
所谓临时变量,就是若干函数共用同一个地址的内存,根据不同的程序,同样一个函数,在这和项目里可能和别 ...

就是栈空间里循环利用的内存,这个函数用用那个函数改改,指不定成什么了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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