STM32
直播中

张亮

7年用户 1275经验值
私信 关注
[问答]

怎样去解决STM32自带库函数串口收发数据时第一个字符丢失的问题呢

怎样去解决STM32自带库函数串口收发数据时第一个字符丢失的问题呢?

回帖(1)

王桂香

2021-12-8 14:23:03
现象:收发数据时第一个字符丢失

使用STM32自带库函数:USART_SendData()函数发送一堆字符是没有问题的;若发送的数据量很小时,此时串口发送的只是最后一个字符,就会导致发送的数据莫名其妙的丢失。





发送字符串OK时只返回K;
发送字符串+NBAND:5时只返回NBAND:5;
发送字符串 46011时只返回6011;
解决方案

网上找了许多解决的方案,但是1,2方案对我当时所做的项目没有任何作用:
方案1. 在每一个字符发送后检测状态位。





然而结果没变,丢失第一个字符。
方案2. 修改库函数
修改STM32自带的USART_SendData()函数。(加入while语句,等待发送缓冲区空才能发送下一个字符。)





结果一样,没有变化,照样还是丢失第一个字符。
方案3.照样修改库函数
猜测也许是某个特殊原因,使第二个数据覆盖了首个数据,使得首个数据丢失。
于是修改STM32自带的USART_SendData()函数,加入延时函数。





现象:


举报

更多回帖

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