你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

串口通信,为什么在Debug的时候不正常

[复制链接]
快乐的小陈 提问时间:2015-6-21 21:14 /
从串口调试助手向开发板发送一个数据0x55,再将接收到的数据发送出去。
串口中断服务函数如下:
if( USART_GetITStatus(USART_CHANNEL, USART_IT_RXNE) != RESET )  
    {gg_rs232_recv_buf[gg_recv_index]=(T_U8)USART_ReceiveData(USART_CHANNEL);
      USART_SendData(USART_CHANNEL, gg_rs232_recv_buf[gg_recv_index]);
​       gg_recv_index++;
    }
在Debug模式下,在接收的缓存中gg_rs232_recv_buf[]收到的是0x30(即只有第一个字符被接收到了),如图1所示:






从串口发送出来的也是0x30,如图2所示:






然而在连续运行的时候,发送的0x55,接收之后,然后可以通过串口正常地发送出来,如图3所示:
为什么在Debug的时候不正常呢?没找出原因,求大神指点!

接收缓存中接收到的数据

接收缓存中接收到的数据

串口发送出去的数据

串口发送出去的数据

连续运行时串口发出的数据

连续运行时串口发出的数据
收藏 评论9 发布时间:2015-6-21 21:14

举报

9个回答
creep 回答时间:2015-6-21 21:23:33
本帖最后由 creep 于 2015-6-21 21:27 编辑

道理很简单,你要发送十六进制就要选中HEX发送,如果不选择的话就会以ASCII发送‘0’,‘x’,'5','5',因为你又是中断模式下的dubug,所以第一次中断只能接收第一个字符‘0’,即使0x30,非dibug模式下肯定会把4个字符接收完成的所以看上去是对的。如果debug模式下全速运行得到的结果也是应该是对的。
creep 回答时间:2015-6-21 21:24:51
发送0X55正确的设置如下,选上HEX发送:
com.jpg
快乐的小陈 回答时间:2015-6-21 22:13:41
creep 发表于 2015-6-21 21:24
发送0X55正确的设置如下,选上HEX发送:

的确是这个问题,非常感谢!
mark0668 回答时间:2015-6-22 00:43:31
谢谢分享
小小超 回答时间:2015-6-22 09:20:50
谢谢分享!!
wyxy163@126.com 回答时间:2015-6-22 11:29:14
提示: 作者被禁止或删除 内容自动屏蔽
小蚂蚁快溜跑 回答时间:2015-6-22 20:25:42
学习了
jacobfeng 回答时间:2015-6-22 23:53:43
学习了
埃斯提爱慕 回答时间:2015-6-23 22:06:53
提示: 作者被禁止或删除 内容自动屏蔽

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版