请问串口通信为什么在Debug的时候不正常?

2019-07-14 17:13发布

从串口调试助手向开发板发送一个数据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的时候不正常呢?没找出原因,求大神指点!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
亲爱的娜娜
1楼-- · 2019-07-14 21:30
发送0X55正确的设置如下,选上HEX发送:
chunlan83768
2楼-- · 2019-07-14 23:56
 精彩回答 2  元偷偷看……
骑猪去天山
3楼-- · 2019-07-15 03:39
谢谢分享
60user189
4楼-- · 2019-07-15 07:16
谢谢分享!!
youxi8745
5楼-- · 2019-07-15 10:13
亲爱的娜娜 发表于 2018-9-30 16:59
本帖最后由 creep 于 2015-6-21 21:27 编辑

道理很简单,你要发送十六进制就要选中HEX发送,如果不选择的话就会以ASCII发送‘0’,‘x’,'5','5',因为你又是中断模式下的dubug,所以第一次中断只能接收第一个字符‘0’,即使0x30,非dibug模式下肯定会把4个字符接收完成的所以看上去是对的。如果debug模式下全速运行得到 ...

学习了,哈哈哈
丰盛慈爱
6楼-- · 2019-07-15 13:55
学习了

一周热门 更多>