// Jefferson Amaral da Silva
/*
3. Elabore um código utilizando a interfaces UART0 e conecte os fios TX e RX atribuídos à essa interface entre.
Essa estrutura envia dados e recebe os dados na mesma interface, apenas para verificar seu funcionamento.
Utilize a função scanf da biblioteca stdio para enviar via console um dado à placa, em seguida, transmita da UART0
para a UART1, e por fim, transmita o dado recebido para o console utilizando o printf.
*/
#include <stdio.h>
#include "pico/stdlib.h"
#include <stdio.h>
#include <string.h>
#include "hardware/uart.h"
// Definição dos pinos
#define UART0_TX_PIN 0
#define UART0_RX_PIN 1
#define UART1_TX_PIN 8
#define UART1_RX_PIN 9
// Protótipos das funções.
void config_uart();
void send_message();
void recover_message();
// Variáveis globais.
char message[50];
// Configura as interfaces UART.
void config_uart() {
// Configurações da UART0
uart_init(uart0, 115200); // Inicializa a UART0 com baud rate de 115200
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART); // Configura pino 0 como TX
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART); // Configura pino 1 como RX
// Configurações da UART1
uart_init(uart1, 115200); // Inicializa a UART0 com baud rate de 115200
gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART); // Configura pino 0 como TX
gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART); // Configura pino 1 como RX
uart_set_fifo_enabled(uart0, true);
uart_set_fifo_enabled(uart1, true);
}
// Envia uma mensagem informada da interface UART 0 para a UART 1.
void send_message() {
// Lê a mensagem do console.
printf(" ");
scanf("%s", &message);
// Envia a mensagem pela UART0
uart_puts(uart0, message);
}
// Verifica se há dados disponíveis na UART1 e, em caso positivo, recupera a mensagem.
void recover_message() {
if (uart_is_readable(uart1)) {
char received[50];
int i = 0;
// Lê a mensagem recebida da UART1
while (uart_is_readable(uart1) && i < sizeof(received) - 1) {
received[i++] = uart_getc(uart1);
}
received[i] = '\0'; // Finaliza a string recebida
sleep_ms(50);
// Imprime a mensagem recebida no console
printf("\nMensagem recebida na UART1: %s\n", received);
} else {
printf("Nenhuma mensagem recebida na UART1.\n");
}
}
int main() {
stdio_init_all();
config_uart();
// Envia a mensagem.
send_message();
// Aguarda um tempo para a transmissão.
sleep_ms(100);
// Recupera a mensagem enviada.
recover_message();
}