完善资料让更多小伙伴认识你,还能领取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中加个超时处理~
|
|
|
|
问题找到了。谢谢,你的建议很好 |
|
|
|
这个串口是与指纹模块通讯的,每次发送命令,都会返回应答包的,所以不担心这个问题。确实使用中断会好很多。谢谢! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2201 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2027 浏览 3 评论
4633 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2171 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2705 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 21:59 , Processed in 0.662575 second(s), Total 89, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号