打印
[STM32F1]

请教电脑接收端不打开串口,STM32不断发送数据会丢失一个字节的原因!

[复制链接]
1327|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sxslyy|  楼主 | 2013-11-22 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现象是这样的,STM32不断发送数据如:01,02,03,04,。。。。。,如这时串口助手不打开串口,过一会再打开,就会出现丢失一个字节的情况!如:01,02,03,这时关闭电脑的串口,再打开,再接收的数据就会是05,06,07。。。。 04这个字节丢了!想知道原因!单步跟程序:
while(1)
{
USART_SendData(USART2, i++);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET){}
}

USART_SendData(USART2, i++);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET){}
当关闭电脑的串口这两句还在不停执行!我觉着当这样总是后一个字节进入TDR,再被后一个字节覆盖掉!应丢失很多字节!为什么再打开串口时!总是只丢了一个字节!如果说这些字节是被计算机串口的接收缓存给缓存了!那有为什么会丢一个!而不是全都缓存不损失!这个丢失的字节是在什么过程中被后一个字节覆盖丢失了呢!
沙发
sxslyy|  楼主 | 2013-11-25 21:31 | 只看该作者
问题找到了:我使用的是PL2303转的串口,可能PL2303线有缓存的功能!不能这条线,直接用正常串口就对了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

31

帖子

0

粉丝