#include "pico/stdlib.h"
#include "hardware/uart.h"
#include <stdio.h>
// Definições para UART
#define UART0_ID uart0
#define UART1_ID uart1
#define BAUD_RATE 9600
#define UART0_TX_PIN 0 // Pino TX da UART0
#define UART0_RX_PIN 1 // Pino RX da UART0
#define UART1_TX_PIN 4 // Pino TX da UART1
#define UART1_RX_PIN 5 // Pino RX da UART1
int main() {
// Inicializa o sistema de I/O padrão
stdio_init_all();
// Configura UART0
uart_init(UART0_ID, BAUD_RATE);
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART); // Configura pino TX
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART); // Configura pino RX
// Configura UART1
uart_init(UART1_ID, BAUD_RATE);
gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART); // Configura pino TX
gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART); // Configura pino RX
printf("Comunicação Serial UART - Digite algo para testar\n");
while (1) {
char input[50] = {0}; // Buffer para armazenar entrada
printf("Digite algo: ");
scanf("%49s", input); // Lê dados do console (via USB)
// Transmite da UART0 para a UART1
for (int i = 0; input[i] != '\0'; i++) {
uart_putc(UART0_ID, input[i]); // Envia pela UART0
}
uart_putc(UART0_ID, '\n'); // Envia um caractere de nova linha
printf("Enviando para UART1...\n");
// Lê da UART0 (RX) e transmite para a UART1 (TX)
while (uart_is_readable(UART0_ID)) {
char received = uart_getc(UART0_ID); // Lê caractere da UART0
uart_putc(UART1_ID, received); // Transmite para a UART1
}
printf("Transmissão completa!\n\n");
}
return 0;
}