OpenEdv-开源电子网

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

关于串口通讯 诡异的一个问题

[复制链接]

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
发表于 2013-5-18 17:09:57 | 显示全部楼层 |阅读模式

 本人写了个串口通讯程序 当程序全速运行的时候 总是会丢失最后一个要发送的字符  但是当使用仿真器设置断点的时候 程序返回数据正常

部分代码如下
 do
 { USART_SendData(USART1,Rev_485_temp); 
  while(!USART_GetFlagStatus(USART1,USART_FLAG_TXE));
  i++;
 } while(Rev_485_temp[i-1]!=0x0a);  
本锻程序的意思是 让串口发送数据 当遇到0x0a的时候 发送数据结束  假如 应该发送的数据是 01 02 03 0d 0a  如果在do出设置断点 然后再全速运行
 则程序正确  但是 当不使用仿真 全速运行的时候 程序返回数据是 01 02 03 0d  把最后应该返回的0x0a丢了 
求高手指点! 谢谢!

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-18 18:00:05 | 显示全部楼层
USART_SendData(USART1,Rev_485_temp); 
  while(!USART_GetFlagStatus(USART1,USART_FLAG_TXE));
位置调转下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
 楼主| 发表于 2013-5-19 09:00:33 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
呵呵 谢谢原子哥  不是这个问题 我找到原因了 485通讯的 当从发送转换到接收状态的时候 有个延时时间 我发送一串数据 然后直接把485从发送状态转换成了接收状态 导致最后一个字符丢失 呵呵 经验不足啊...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-19 10:35:20 | 显示全部楼层
哦,谢谢分享经验。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 14:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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