#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
#define UART0_ID uart0
#define UART1_ID uart1
#define UART0_TX_PIN 0
#define UART0_RX_PIN 1
#define UART1_TX_PIN 4
#define UART1_RX_PIN 5
void clear_uart_buffer(uart_inst_t *uart) {
while (uart_is_readable(uart)) {
uart_getc(uart); // Descarta qualquer caractere residual
}
}
int main() {
stdio_init_all();
// Inicializa UART0
uart_init(UART0_ID, 115200);
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART);
// Inicializa UART1
uart_init(UART1_ID, 115200);
gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART);
// Garante que o stdin não bufferize entrada
setbuf(stdin, NULL);
while (1) {
printf("Digite um caractere: ");
// Limpa qualquer entrada residual antes de pedir novo caractere
clear_uart_buffer(UART0_ID);
// Aguarda e lê um caractere da UART (substituindo scanf())
char input_char = uart_getc(UART0_ID);
// Exibe o caractere digitado
printf("\nVocê digitou: %c", input_char);
// Envia caractere de UART0 para UART1
uart_putc(UART0_ID, input_char);
// Aguarda até que um caractere seja recebido pela UART1
while (!uart_is_readable(UART1_ID));
char received_char = uart_getc(UART1_ID);
// Exibe o caractere recebido
printf("\nCaractere recebido: %c\n", received_char);
}
}