STM32篇(串口USART收发遇到第一个字符丢失)
现象:收发数据时第一个字符丢失 使用STM32自带库函数:USART_SendData()函数发送一堆字符是没有问题的;若发送的数据量很小时,此时串口发送的只是最后一个字符,就会导致发送的数据莫名其妙的丢失。
文章图片
发送字符串OK时只返回K;
发送字符串+NBAND:5时只返回NBAND:5;
发送字符串 46011时只返回6011;
解决方案 【STM32篇(串口USART收发遇到第一个字符丢失)】网上找了许多解决的方案,但是1,2方案对我当时所做的项目没有任何作用:
方案1. 在每一个字符发送后检测状态位。
文章图片
然而结果没变,丢失第一个字符。
方案2. 修改库函数
修改STM32自带的USART_SendData()函数。(加入while语句,等待发送缓冲区空才能发送下一个字符。)
文章图片
结果一样,没有变化,照样还是丢失第一个字符。
方案3.照样修改库函数
猜测也许是某个特殊原因,使第二个数据覆盖了首个数据,使得首个数据丢失。
于是修改STM32自带的USART_SendData()函数,加入延时函数。
文章图片
现象:
文章图片
推荐阅读
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- 亲子日记第186篇,2018、7、26、星期四、晴
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 两短篇
- 第四十三篇接纳孩子的感受
- 感恩日记第111篇2020.02.06
- 2018年8月25日|2018年8月25日 星期六 晴 亲子日记第259篇
- 25篇中考随笔