高级会员

- 积分
- 559
- 金钱
- 559
- 注册时间
- 2018-10-3
- 在线时间
- 107 小时
|
发表于 2021-9-28 10:21:11
|
显示全部楼层
本帖最后由 wklhwkl 于 2021-9-28 10:25 编辑
分享一个超时接收 不会丢数据
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
if (UartHandle == &huart3)
{
uart0_buf[recieve_index++] = aRxBuffer;
// 这里需要判断recieve_index是否越界
recievedFlag = 1;
uartTimeCounter = 1+HAL_GetTick();
HAL_UART_Receive_IT(&huart3,&aRxBuffer,1);
}
}
int main{
...
HAL_UART_Receive_IT(&huart3,&aRxBuffer,1);
while(1)
{
if(recievedFlag && uartTimeCounter <HAL_GetTick())
{
recievedFlag=0;
//处理数据
}
}
}
|
|