你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32串口接收大量数据时会等不到RXNE标志,为什么

[复制链接]
jszy1987 提问时间:2018-7-6 09:45 /
   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))
        {
         }
       }
     }

请问各位有遇到过这种情况的吗?还请多多指教


收藏 评论10 发布时间:2018-7-6 09:45

举报

10个回答
废鱼 回答时间:2018-7-6 09:51:24
HAL_UART_Receive(&huart1,(uint8_t*)&RxData,1,1);
把最后的1该成1000试试,这个是说等待延时,1ms的话太快了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

废鱼 回答时间:2018-7-6 09:51:53
发生溢出错误以后,需要重新初始化串口。
MrJiu 回答时间:2018-7-6 09:54:41
一直发送,间隔频率是多少?push_char(ldc_parser,RxData);这个处理放在中断里面?还有耗时多少(预估)!!

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

电子星辰 回答时间:2018-7-6 10:31:52
RxData是什么类型呢

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

STM1024 回答时间:2018-7-6 10:41:28
怀疑你数据太快,所以有可能请测试一下:
串口有一个overrun的中断,USART_IT_ORE: OverRun Error interrupt
注册一下这个中断处理函数,看看能不能进入这个中断。
如果确实是这个问题,提供两个解决方案:
1.降低数据发送频率
2.开启硬件流控制,参考串口的RTS针脚

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

黑皮男 回答时间:2018-7-6 11:07:24
看着像处理速度不够,最好用缓存来接收数据

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

叶♂子 回答时间:2018-7-6 11:15:37
HAL库效率不高,没怎么用,表示不清楚。帮忙顶起

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

斜阳 回答时间:2018-7-6 12:25:23
HAL_UART_Receive()一次接收一个Byte数据会有丢数据的情况。我之前遇到过。改成不定长数据接收解决的。或者用LL库也可以处理

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

jakecumt 回答时间:2018-7-6 12:25:36
增加缓存,这个好像是接收数据溢出引起的

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wenyangzeng 回答时间:2018-7-6 17:54:09
本帖最后由 wenyangzeng 于 2018-7-6 21:39 编辑

那个接收超时判断在HAL里已经执行了。
楼主在这里又运行:
if(UartState == HAL_TIMEOUT)
       {
          break;
       }
由于break了,当然无法执行下一句: push_char(ldc_parser,RxData);

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版