Hi Eric O'Neill
RTOS Uart driver is blocking the current task until whole required data are received.
It works like this, in the UART ISR, when the predefined number of data has been received already, the callback functioin is called, the in the callback function, a semaphore is posted.
In the freertos_uart demo, the predefined number of data is 4. if you define the length as 1, the function will receive just 1 byte every time and return immeediately.
UART_RTOS_Receive(uart_rtos_handle_t *handle, uint8_t *buffer, uint32_t length, size_t *received)
Regards
Daniel