您现在的位置: 主页 > 嵌入式处理器 > ARM > STM32 > stm32应用 > stm32 串口发送字符串第一个字节丢失的问题
本文所属标签:
为本文创立个标签吧:

stm32 串口发送字符串第一个字节丢失的问题

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-01 

点击上方 “ 畅学电子 ” 一键关注,轻松学习电子知识

畅学电子网订阅号每天更新电子行业技术文章,及单片机最新资讯,随时随地轻松学习

使用stm32f205调试串口通讯时,发现一个问题,上电后串口发送字符串的第一个字节会丢失,发送测试数据hello,接收端收到的数据为:ello,第一个字符丢失。用示波器抓取波形,发现第一个数据的波型也是丢失的。

出现问题的代码如下:

while(str[i]!=0)

{

USART_SendData(USART1,str[i]);

i++;

/*Loopuntiltheendoftransmission*/

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET)

{}

}

原因:

1.通过DEBUG查看,在执行USART1_init();串口初始化完成后:TXE,TC是置1的。

2.RM0033中有一段描述,

两者的区别在于:往USART_DR中写数据的时候TXE直接被清零。TC清零则需要先读取USART_SR,然后写USART_DR

在出现错误的代码执行之前加一句:

USART_GetFlagStatus(USART1,USART_FLAG_TC);就不存在错误了。

当然,直接清零也可以:USART_ClearFlag(USART1,USART_FLAG_TC);

或者用USART_FLAG_TXE标志来判断。

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

如何分享到朋友圈点击右上角 在弹出菜单选择 分享到朋友圈
如何关注 " 畅学电子 "1. 在微信上点击右上角”+" 点击“添加朋友" → 在"查找公众号"里搜索" 畅学电子 "即可查找并关注
2. 搜索微信号" 畅学电子 "也可查找并关注我们
如何查看往期的历史消息点击右上角图标进入"账号资料" → "查看历史消息"
畅学电子订阅号微信名:畅学电子
每天更新电子行业各种知识,及单片机最新资讯,来开启你的视觉盛宴吧
畅学电子服务号微信名:畅学电子
一个新型的知识分享平台,在线查看畅学电子网的最新文章、在线视频等,带你进入电子工程师技术开发学习的世界

==> 前往 www.eeskill.com 学习更多知识!




              查看评论 回复



嵌入式交流网主页 > 嵌入式处理器 > ARM > STM32 > stm32应用 > stm32 串口发送字符串第一个字节丢失的问题
 点击 电子 畅学

"stm32 串口发送字符串第一个字节丢失的问题"的相关文章

网站地图

围观()