完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
while(1)
{ UartState = HAL_UART_Receive(&huart1,(uint8_t*)&RxData,1,1); if(UartState == HAL_tiMEOUT) { break; } push_char(ldc_parser,RxData); } 长时间向串口发送数据后,进不了push_char函数了,就是一直接收超时,但是串口确实一直在发送数据;波特率为115200 debug看,是一直在这个循环里面,timeout了 while(__HAL_UART_GET_FLAG(huart, Flag) == RESET) { /* Check for the Timeout */ if(Timeout != HAL_MAX_DELAY) { if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout)) { } } } 请问各位有遇到过这种情况的吗?还请多多指教 |
|
相关推荐
13个回答
|
|
|
|
|
|
发生溢出错误以后,需要重新初始化串口。
|
|
|
|
一直发送,间隔频率是多少?push_char(ldc_parser,RxData);这个处理放在中断里面?还有耗时多少(预估)!!
|
|
|
|
RxData是什么类型呢
|
|
|
|
怀疑你数据太快,所以有可能请测试一下:
串口有一个overrun的中断,USART_IT_ORE: OverRun Error interrupt 注册一下这个中断处理函数,看看能不能进入这个中断。 如果确实是这个问题,提供两个解决方案: 1.降低数据发送频率 2.开启硬件流控制,参考串口的RTS针脚 |
|
|
|
看着像处理速度不够,最好用缓存来接收数据
|
|
|
|
HAL库效率不高,没怎么用,表示不清楚。帮忙顶起
|
|
|
|
HAL_UART_Receive()一次接收一个Byte数据会有丢数据的情况。我之前遇到过。改成不定长数据接收解决的。或者用LL库也可以处理
|
|
|
|
增加缓存,这个好像是接收数据溢出引起的
|
|
|
|
本帖最后由 wenyangzeng 于 2018-7-6 21:39 编辑
那个接收超时判断在HAL里已经执行了。 楼主在这里又运行: if(UartState == HAL_TIMEOUT) { break; } 由于break了,当然无法执行下一句: push_char(ldc_parser,RxData); |
|
|
|
烂库,害人不浅啊
|
|
|
|
赶快放弃库哦
|
|
|
|
现在还来得及的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2136 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1970 浏览 3 评论
4566 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2116 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2629 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 02:19 , Processed in 0.860798 second(s), Total 98, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号