OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10194|回复: 5

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

[复制链接]

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2014-5-22
在线时间
0 小时
发表于 2014-10-13 11:57:07 | 显示全部楼层 |阅读模式

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

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

出现问题的代码如下:

while(str != 0)

{

    USART_SendData(USART1, str);

    i++;

    /* Loop until the end of transmission */

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

    {}

}

原因:

1.通过DEBUG查看,在执行USART1_init();串口初始化完成后:TXETC是置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标志来判断。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

93

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2014-3-12
在线时间
9 小时
发表于 2014-10-13 13:53:18 | 显示全部楼层
你把发送跟等待的那两句换位置试试
while(str != 0)
{

    while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
    USART_SendData(USART1, str);
    i++;    
}
功夫再高、也怕羊刀
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2014-10-14 08:34:17 | 显示全部楼层
http://wenku.baidu.com/link?url=fHjt9wzYyvQzVisNtx0aRoiPnnqHryZV2aCmeVv8rvMQk8S6z7omhJH1jwQERNs9bzwL6qZMSlOFIUYXqeQ079uqAEjNIZ3ZmdzGfU73t4O   stm32 串口第一字节丢失问题分析
这个站内有,原子哥回答过,问之前可以搜一下相关帖子
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13086
金钱
13086
注册时间
2012-11-26
在线时间
3809 小时
发表于 2014-10-14 09:00:16 | 显示全部楼层
先判断是否发完  再进行发送
学无止境
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2014-10-5
在线时间
10 小时
发表于 2015-11-7 10:47:09 | 显示全部楼层
用的原子哥的程序改的,我的发送没问题,但是接收始终接收不到,先清除TC也不行,最后发现发数据之前读一次TC,就发送接收都正常!仅供参考
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2014-10-5
在线时间
10 小时
发表于 2015-11-8 12:04:18 | 显示全部楼层
试试TX通过10K电阻拉高至5V看看效果怎样
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-17 10:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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