我的 IT 在收到 8 个字节后被调用:
HAL_UART_Receive_IT(&huart2, buffer1, 8);
其中 buffer1 的长度为 8.
在我的回调函数中,我将 8 个字节复制到单独的缓冲区 2 和空缓冲区 1 并重新启动接收。 这样我不断收到:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
for(int i=0; i<8; i++){
buffer2[i] = buffer1[i];
buffer1[i] = '\0';
}
HAL_UART_Receive_IT(&huart2, buffer1, 8);
}
问题:如果我的串口输入超过8个字节,8个字节后执行回调函数,就会报overrun error,无法再接收
我的行为如下,它在 8 个字节后被调用,然后,在重新启动后我似乎正在读取 one more 字节到我的缓冲区 1,之后发生错误。在我看来,扩孔字节存储在某个地方,有没有办法丢弃溢出?
我知道 uart 函数以循环方式工作我的 buffer1,因此我的期望是:
example- 接收 10 个字节。 8字节后的IT 重启接收 读取剩余的 2 个字节。