Un UART 16550 externo, como este , realiza una conversión de los datos en serie de UART hacia y desde puertos paralelos que pueden ser leídos por un microprocesador / microcontrolador. Se dirige como cualquier puerto de E / S paralelo externo y tiene registros de control para configurar varios modos, otro para velocidad de transmisión, otro para estado, uno como un búfer de recepción (Rx) y otro para un búfer de transmisión (Tx). (Los buffers de Rx y Tx pueden estar vinculados a través de FIFO, pero eso no es importante para esta pregunta. También hay otros tipos de UART a los que se accede a través de los buses I2C o SPI; eso tampoco tiene relación con la pregunta).
Para que los caracteres recibidos tengan algún efecto en el microprocesador, se debe estar ejecutando un controlador que responde al UART. Además, debe haber un nivel más alto de firmware que se comunique con el controlador.
Si está ejecutando "bare metal", sin un sistema operativo, entonces sin el código que se escribe explícitamente en los registros en el UART para habilitarlo para recibir datos, no ocurrirá nada. Incluso si la funcionalidad UART y el receptor están habilitados, no ocurrirá nada, excepto que los caracteres se mostrarán en el búfer Rx y, según la configuración del programa, el controlador puede o no recibir caracteres en una rutina de interrupción. , donde normalmente se colocarán en un búfer FIFO de software interno. Si no hay firmware para recuperar estos caracteres, el búfer solo se ajustará y se sobrescribirá.
Si está ejecutando un sistema operativo, es probable que tenga que abrir el puerto UART para habilitar cualquier recepción de datos. Los puertos casi nunca se abren sin llamadas explícitas al sistema operativo para hacerlo. Incluso si se hizo esto, si no hay un firmware para manejar los caracteres entrantes, simplemente se tirarán como el desbordamiento FIFO. No ocurrirá nada malo, excepto que si los caracteres llegan a una velocidad muy rápida, entonces se llamará al manejador de interrupciones UART en cada carácter y esto tendrá algún efecto en la carga del procesador. Por lo tanto, es mejor no tener el puerto UART abierto.
El único problema posible sería si el firmware habilitara el UART y luego habilitara las interrupciones de recepción, y no se proporcionó un controlador de interrupciones. Luego, cuando se recibió un personaje, el programa se iría a la tierra de nunca jamás. Pero esto no sucederá por sí mismo, requeriría que el firmware configure explícitamente las cosas para que falle de esta manera. Obviamente, sería un error grave habilitar el UART y su capacidad de interrupción y luego no proporcionar un controlador.