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

串口通信,为什么在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
谢谢分享
ts2000 回答时间:2015-6-22 09:20:50
谢谢分享!!
数码小叶 回答时间:2015-6-22 11:29:14
creep 发表于 2015-6-21 21:23
道理很简单,你要发送十六进制就要选中HEX发送,如果不选择的话就会以ASCII发送‘0’,‘x’,'5','5',因为 ...

学习了,哈哈哈
小蚂蚁快溜跑 回答时间:2015-6-22 20:25:42
学习了
jacobfeng 回答时间:2015-6-22 23:53:43
学习了
dsjsjf 回答时间:2015-6-23 22:06:53
creep 发表于 2015-6-21 21:23
道理很简单,你要发送十六进制就要选中HEX发送,如果不选择的话就会以ASCII发送‘0’,‘x’,'5','5',因为 ...

分析得很透彻

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版