En mi placa principal tengo un STM32F103ZET6 y uso la biblioteca HAL V1.6 para programarlo. También hay una placa de sensores que está conectada a mi placa principal y este sensor me envía datos a través de UART continuamente. Para obtener datos del sensor, utilizo la interrupción RXNE. Hay algunos comandos que puedo enviar a este sensor para cambiar algunos ajustes de este sensor. cuando quiero mandar este sensor y enviarle algunos datos, si uso HAL_UART_Transmit () (enviar datos sin usar la interrupción TXE) en algunas ocasiones obtengo un error de saturación. Pero cuando uso HAL_UART_Transmit_IT () (enviar datos utilizando la interrupción TXE) parece que no obtengo ningún error. ¿Por qué sucede?
En el manual de referencia RM0008, en la página 794 tenemos el diagrama de bloques de USART. Aunque muestra que hemos separado RDR y TDR, parece que solo tenemos un registro de DATOS compartido por TDR y RDR y tenemos acceso directo solo a DR. cuando queremos transmitir datos debemos escribir en DR y, cuando se reciben algunos datos, también se ponen en DR. Ahora considere, mientras tanto, estamos enviando datos y colocando algunos datos en DR, hay datos que se están recibiendo y se activan las interrupciones. ¿qué pasaría? ¿Esto causa un error de ejecución excesiva?