#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
#include "hardware/irq.h"
#define UART_ID uart0
#define BAUD_RATE 115200
#define DATA_BITS 8
#define STOP_BITS 1
#define PARITY UART_PARITY_NONE
#define UART0_TX_PIN 0
#define UART0_RX_PIN 1
char buffer[256];
void configurar_uart() {
uart_init(UART_ID, BAUD_RATE);
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART);
uart_set_hw_flow(UART_ID, false, false);
uart_set_format(UART_ID, DATA_BITS, STOP_BITS, PARITY);
uart_set_fifo_enabled(UART_ID, true);
}
int main() {
stdio_init_all();
configurar_uart();
printf("\n===========================================\n");
printf(" TESTE DE COMUNICACAO UART\n");
printf("===========================================\n\n");
while (1) {
printf("Digite um caractere: ");
memset(buffer, 0, sizeof(buffer));
if (scanf(" %c", buffer) == 1) {
printf("\n-------------------------------------------\n");
printf("Caractere digitado: %c\n", buffer[0]);
// Envia o dado pela UART0
uart_putc(UART_ID, buffer[0]);
// Aguarda um momento para garantir a transmissão
sleep_ms(10);
// Lê o dado recebido
if (uart_is_readable(UART_ID)) {
char dado_recebido = uart_getc(UART_ID);
printf("Caractere recebido via UART: %c\n", dado_recebido); // Corrigido: tudo em um único printf
}
printf("-------------------------------------------\n\n");
}
}
return 0;
}