No se pueden transmitir todos los caracteres a través de UART

Estoy usando stm32f0 MCU.

Me gustaría transmitir cada byte recibido del uart fuera del uart. Estoy habilitando una interrupción en cada byte recibido de uart.

Mi código es bastante simple.

uint8_t Rx_data[5]; 

//Interrupt callback routine
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if (huart->Instance == USART1)  //current UART
    {
        HAL_UART_Transmit(&huart1, &Rx_data[0], 1, 100);        
        HAL_UART_Receive_IT(&huart1, Rx_data, 1);   //activate UART receive interrupt every time on receiving 1 byte
    }
}

Mi PC transmite ASCII12345678 a stm32. Si las cosas funcionan como se esperaba, la PC debería estar recibiendo12345678 espalda. Sin embargo, la PC recibe1357 en lugar. ¿Qué tiene de malo el código?

Respuestas a la pregunta(3)

Su respuesta a la pregunta