Aumenté mi velocidad en baudios de 56000 a 115200 y mi comunicación en serie deja de funcionar al hacer ping continuamente después de 10-20 segundos. Estoy corriendo a 16 MHz.
Por lo que sé, el controlador HAL manejará la saturación, entre otros errores al borrar la bandera y llamar a la función de devolución de llamada de error. Si ese es el caso, entonces si tengo un exceso de velocidad debido al aumento en la velocidad, debería borrarse y mi comunicación debería continuar trabajando después de eso.
También descubrí que aumentar la velocidad del procesador a 32 MHz "soluciona" el problema, pero no quiero confiar en eso. Quizás solo tome mucho más tiempo para que se produzca el error.
¿Mi entendimiento es correcto? ¿Las marcas UART se borran automáticamente con los controladores HAL? ¿Necesito limpiarlos yo mismo o manejarlos de alguna manera? ¿Hay algo que me falta?
Básicamente uso HAL_UART_Transmit_IT () y llamo a HAL_UART_Receive_IT () después de que termine y no hago nada más.