OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3724|回复: 3

HAL_UART_Receive超时会影响rx接收到的数据吗

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-4-11
在线时间
2 小时
发表于 2022-4-11 16:30:09 | 显示全部楼层 |阅读模式
1金钱


HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{

  huart->RxXferCount = Size;
while (huart->RxXferCount > 0U)
    {
      if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK)
      {
        return HAL_TIMEOUT;
      }
      if (pdata8bits == NULL)
      {
        *pdata16bits = (uint16_t)(huart->Instance->DR & 0x01FF);
        pdata16bits++;
      }

      huart->RxXferCount--;
    }

}
这个HAL库函数是阻塞型的,如果在Timeout时间内没有接收到Size个字节的数据,就超时了。但是也读取了数据寄存器DR,
那么从调用HAL_UART_Receive这个函数到超时这段时间,stm32从rx引脚接收到的数据会因为*pdata16bits = (uint16_t)(huart->Instance->DR & 0x01FF);
这个操作而被清除吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2070
金钱
2070
注册时间
2021-7-17
在线时间
647 小时
发表于 2022-4-11 17:34:19 | 显示全部楼层
超过超时的时间就会重新开始,后面的就不进行了
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-4-11
在线时间
2 小时
 楼主| 发表于 2022-4-12 08:13:02 | 显示全部楼层
ChenRyan 发表于 2022-4-11 17:34
超过超时的时间就会重新开始,后面的就不进行了

那在超时时间内外部发给stm32的这段数据数据会被清空吗
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-4-11
在线时间
2 小时
 楼主| 发表于 2022-4-15 10:39:37 | 显示全部楼层
自己顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 21:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表