当我们使用HAL_UART_Receive_IT();设置为HAL_UART_Receive_IT(&huarst1,buf,5);
如果我们故意传入的数据为大于5的一帧连续快速传入,在第一帧时,串口会接收前5个数据,构成一个单独的帧,同时使用回调函数HAL_UART_RxCpltCallback()。
**但是,**第二次再传入“123456”数据帧后,程序虽然也能成功调用HAL_UART_RxCpltCallback(),并且调用结束后使用HAL_UART_Receive_IT(&huarst1,buf,5);继续接收数据。
程序就再也进不去回调函数HAL_UART_RxCpltCallback(),只能每次一接收到数据就进入回调函数HAL_UART_ErrorCallback();在串口结构体中可以看到其错误返回是:ErrorCode等于4通常表示在使用HAL库的USART(通用同步异步收发器)中发生了帧错误。
下面是第一次123456传入时的情况。
下面是第二次123456传入时的情况。
目前还没找到解决办法,先写个帖子放在这。