请教一个STM32串口接收卡住的问题
时间:10-02
整理:3721RD
点击:
请教一下大家;
STM32使用串口1,使用查询模式接收数据,如下:
u8 USART1_ReceivByte(void)
{
u8 recev;
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
recev = USART_ReceiveData(USART1);
return recev;
}
经过检查,是程序卡死在那个while循环里面,出现这种情况,一般是什么原因造成的呢?
(库里面的函数没修改过)
谢谢!
STM32使用串口1,使用查询模式接收数据,如下:
u8 USART1_ReceivByte(void)
{
u8 recev;
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
recev = USART_ReceiveData(USART1);
return recev;
}
经过检查,是程序卡死在那个while循环里面,出现这种情况,一般是什么原因造成的呢?
(库里面的函数没修改过)
谢谢!
是跳线帽接错了,接收和发送短路了,就出现这种情况。
可能是接收数据头不对吧 没有收到有效数据 你用串口助手试一试
while后面多了个分号
调用你这个函数以后没有串口数据来岂不是会一直卡在这句话上。建议采用中断接收吧,比查询效率要高
同意2楼意见。话说回来就算你硬是想用查询模式接收数据,个人建议你在while1中加个超时处理~
问题找到了。谢谢,你的建议很好
这个串口是与指纹模块通讯的,每次发送命令,都会返回应答包的,所以不担心这个问题。确实使用中断会好很多。谢谢!