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; } }