stm32 芯片将收到数据返回给串口调试助手。不管串口调试助手发送什么,返回的值都为0x00。

while(1){if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==SET){USART_SendData(USART2,U... while(1)
{
if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)==SET)
{
USART_SendData(USART2, USART_ReceiveData(USART2));
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);//等待发送结束
}

}
注单独利用串口发送数据是正常的。
展开
 我来答
joodoo75
推荐于2016-10-19 · TA获得超过449个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:93.3万
展开全部

USART_SendData(USART2, USART_ReceiveData(USART2));

分两步写成
data = USART_ReceiveData(USART2);
USART_SendData(USART2, data);
看一下data的值是否正确?既然单独利用串口发送数据是正常的,很可能接收有问题。
追问
你说的这种方式我也试过,也是同样的问题。
运行过程if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)==SET),这个条件是满足的,说明是有收到数据。只是发送回去的数据不正确。
另外,我利用虚拟在线调试,是能够正常收发,不会出现上述问题。
追答
我的意思是你收到了数据,但是否收到了正确的数据?用单步调试看一下收到的数据是否对?如果收到的数据是对的,把data = USART_ReceiveData(USART2); 注释掉,把data改为一特定值再看看行不行,如果也不行,就和你的“利用虚拟在线调试,是能够正常收发”矛盾了,看看两者之间的差异吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式