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);//等待发送结束
}
}
注单独利用串口发送数据是正常的。 展开
{
if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)==SET)
{
USART_SendData(USART2, USART_ReceiveData(USART2));
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);//等待发送结束
}
}
注单独利用串口发送数据是正常的。 展开
1个回答
展开全部
把
USART_SendData(USART2, USART_ReceiveData(USART2));
分两步写成
data = USART_ReceiveData(USART2);
USART_SendData(USART2, data);
看一下data的值是否正确?既然单独利用串口发送数据是正常的,很可能接收有问题。
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改为一特定值再看看行不行,如果也不行,就和你的“利用虚拟在线调试,是能够正常收发”矛盾了,看看两者之间的差异吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询