完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
请教一下大家;
STM32使用串口1,使用查询模式接收数据,如下: u8 USART1_ReceivByte(void) { u8 recev; while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET); recev = USART_ReceiveData(USART1); return recev; } 经过检查,是程序卡死在那个while循环里面,出现这种情况,一般是什么原因造成的呢? (库里面的函数没修改过) 谢谢!
|
|
相关推荐
7个回答
|
|
|
是跳线帽接错了,接收和发送短路了,就出现这种情况。
|
|
|
|
|
|
可能是接收数据头不对吧 没有收到有效数据 你用串口助手试一试
最佳答案
|
|
|
|
|
|
while后面多了个分号
|
|
|
|
|
|
调用你这个函数以后没有串口数据来岂不是会一直卡在这句话上。建议采用中断接收吧,比查询效率要高
|
|
|
|
|
|
同意2楼意见。话说回来就算你硬是想用查询模式接收数据,个人建议你在while1中加个超时处理~
|
|
|
|
|
|
问题找到了。谢谢,你的建议很好 |
|
|
|
|
|
这个串口是与指纹模块通讯的,每次发送命令,都会返回应答包的,所以不担心这个问题。确实使用中断会好很多。谢谢! |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 18:57 , Processed in 0.710855 second(s), Total 90, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2145