En muchos ejemplos que usan STM32, HAL, donde los datos de UART se reciben por interrupción, el código se ve así:
Inicialmente (para iniciar la recepción):
HAL_UART_Receive_IT(&huart1, Rx_data, 1);
Cuando se completa una interrupción en la recepción:
//Interrupt callback routine
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
...
HAL_UART_Receive_IT(&huart, Rx_data, 1);
}
Me pregunto si existe la posibilidad de que se pierdan bytes entre la recepción real y después de la (devolución completa) de devolución de llamada, donde la interrupción se inicia nuevamente.
¿O se supone que el controlador de interrupciones de arriba es tan corto que los datos todavía estarán en el búfer de UART?