Sorry, my English is very bad.
I think I can only express my problem in Chinese.
在使用异步串口时,使用uart_rx_enable()设置的超时时间和真实发生UART_RX_RDY事件的时间相差巨大
using async serial port.
The timeout set with uart_rx_enable() is not equal to the time when UART_RX_RDY event occur because of the timeout.
Part of the code:
void start(u8_t *buf, size_t len)
{
int ret;
LOG_WRN("uart_rx_enable(uart_dev, buf, len, 500)");
uart_rx_enable(uart_dev, buf, len, 500);
ret = k_sem_take(&uart_rx_rdy, K_MSEC(10000));
}
static void uart_callback(struct uart_event *evt, void *user_data)
{
switch (evt->type) {
case UART_TX_DONE:
LOG_INF("UART_TX_DONE");
k_sem_give(&uart_tx_done);
break;
case UART_TX_ABORTED:
LOG_INF("UART_TX_ABORTED");
uart_sent_cnt = evt->data.tx.len;
k_sem_give(&uart_tx_aborted);
break;
case UART_RX_RDY:
LOG_INF("UART_RX_RDY: %d", evt->data.rx.len);
uart_received_cnt = evt->data.rx.len;
k_sem_give(&uart_rx_rdy);
break;
case UART_RX_BUF_RELEASED:
k_sem_give(&uart_rx_buf_released);
break;
case UART_RX_DISABLED:
k_sem_give(&uart_rx_disabled);
break;
case UART_RX_BUF_REQUEST:
LOG_INF("UART_RX_BUF_REQUEST");
break;
default:
break;
}
}