请教一个STM32串口接收卡住的问题

2019-07-14 19:50发布

请教一下大家;
STM32使用串口1,使用查询模式接收数据,如下:
u8 USART1_ReceivByte(void)
{
    u8 recev;
       
        while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
    recev = USART_ReceiveData(USART1);
        return recev;
}

经过检查,是程序卡死在那个while循环里面,出现这种情况,一般是什么原因造成的呢?
(库里面的函数没修改过)
谢谢!

2017-03-16_224128.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
hobbye501
1楼-- · 2019-07-15 00:03
可能是接收数据头不对吧  没有收到有效数据 你用串口助手试一试 最佳答案
1058332875
2楼-- · 2019-07-15 00:31
 精彩回答 2  元偷偷看……
HARRY007
3楼-- · 2019-07-15 03:24
调用你这个函数以后没有串口数据来岂不是会一直卡在这句话上。建议采用中断接收吧,比查询效率要高
大熊现在很幸福
4楼-- · 2019-07-15 07:15
同意2楼意见。话说回来就算你硬是想用查询模式接收数据,个人建议你在while1中加个超时处理~
苦瓜你好
5楼-- · 2019-07-15 08:54
大熊现在很幸福 发表于 2017-3-17 09:38
同意2楼意见。话说回来就算你硬是想用查询模式接收数据,个人建议你在while1中加个超时处理~

问题找到了。谢谢,你的建议很好
苦瓜你好
6楼-- · 2019-07-15 09:35
HARRY007 发表于 2017-3-17 08:12
调用你这个函数以后没有串口数据来岂不是会一直卡在这句话上。建议采用中断接收吧,比查询效率要高

这个串口是与指纹模块通讯的,每次发送命令,都会返回应答包的,所以不担心这个问题。确实使用中断会好很多。谢谢!

一周热门 更多>