野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12902|回复: 2

用串口1发送数据,换行符为什么会丢失?

[复制链接]
发表于 2019-8-17 12:23:05 | 显示全部楼层 |阅读模式
在用串口一发送数据的时候,注释掉最后一个延时,会遗漏掉一个换行符,如下图
TIM图片20190817121512.png TIM图片20190817121520.png

取消最后一个延时函数的注释后,最后一个换行符就没有被遗漏,这是为什么?
想不明白……知识范围有限

回复

使用道具 举报

 楼主| 发表于 2019-8-17 13:33:49 | 显示全部楼层
自己想了想,之所以遗漏了最后一个换行符,是因为,上一个数据还没有发送出去,下一个数据就已经发送了,覆盖了上一个的数据,
因此在这里需要用另一个函数来完善这个发送数据的库函数,如下:将USART_SendData
替换成Usart_SendByte即可。
[mw_shl_code=c,true]
/*****************  发送一个字符 **********************/
void Usart_SendByte( USART_TypeDef * USARTx, uint8_t ch)
{
        USART_SendData(USARTx,ch);
        while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);//发送完成标志位
}
[/mw_shl_code]
回复 支持 反对

使用道具 举报

发表于 2019-8-17 13:51:16 | 显示全部楼层
接收端如果是轮询接收 ,很可能就会出现这种情况
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 05:48 , Processed in 0.033438 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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