我回调函数设置了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);
}