新手入门
- 积分
- 9
- 金钱
- 9
- 注册时间
- 2022-4-11
- 在线时间
- 2 小时
|
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);
这个操作而被清除吗?
|
|