STM32
直播中

飘逸的D

12年用户 797经验值
私信 关注
[问答]

STM32通过485接收数据时收到的数据在缓冲区总是错一位,为什么?

我写的函数在while1中以1s的间隔从485中读数据,除了第一次正确以外接下来的每组数都是buf[0] 的数在buf[1],buf[1]的数在buf[2],以此类推,最后buf[0]中的数是数据的最后一个字节。 代码我看不出有问题。 哪个大神给看看?

回帖(1)

胖子的逆袭

2024-5-6 16:56:04
1. 确保您的485通信设置正确:检查波特率、数据位、停止位和奇偶校验位是否与发送设备匹配。

2. 检查缓冲区大小:确保您的缓冲区足够大,可以容纳接收到的数据。

3. 检查接收函数:确保您的接收函数在接收到数据后正确地将其存储在缓冲区中。

4. 检查数据同步:确保您在接收数据时使用了适当的同步机制,例如使用起始位和停止位。

5. 检查数据完整性:在接收到数据后,检查数据是否完整且未损坏。

6. 检查定时问题:您提到在while循环中以1秒的间隔读取数据,这可能导致接收到的数据与预期不符。尝试调整读取数据的间隔,或者使用中断驱动的方式来接收数据。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分