This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

UART接收BUF可以清空吗?

我回调函数设置了24BYTES时就会进入,然后处理接收到的数据。

为了方便识别,第RX[23]是固定的0XAA ,  只有收到RX[23]==0XAA ,  才认为接收正确。

现在发现一种情况,就是有时会多收一个BYTE , 这样0XAA就收不到了。 而且0XAA会在永远在下一次24BYTES的第一个BYTE出现,即RX[0]。

我想在 UART_read(handle, RX, 24)  之前做一个清空接收BUF的动作(或超时处理时清空接收BUF) 。 

void uart_init(void)
{
   。。。。。。
   UartParams.readCallback = readCallback;
   UartHandle = UART_open(Board_UART, &UartParams);
   int rxBytes = UART_read(UartHandle, RX, 24);
}

static void readCallback(UART_Handle handle, void *rxBuf, size_t size)
{
       RX_BYTES += size;

      //处理
     if(RX[23]==0xaa)     {

      }

      UART_read(handle, RX, 24);
}