Estoy usando el puerto COM virtual de la placa TI TM4C1294XL que viene en la interfaz ICDI. Este es el código que estoy usando:
#include <stdint.h>
#include <stdbool.h>
#include "inc/tm4c1294ncpdt.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
int main(void)
{
SYSCTL_RCGCUART_R = SYSCTL_RCGCUART_R0;
while((SYSCTL_PRUART_R & SYSCTL_PRUART_R0) == 0);
SYSCTL_RCGCGPIO_R = SYSCTL_RCGCGPIO_R0;
while((SYSCTL_PRGPIO_R & SYSCTL_PRGPIO_R0) == 0);
GPIO_PORTA_AHB_AFSEL_R = GPIO_PIN_0 | GPIO_PIN_1;
GPIO_PORTA_AHB_PCTL_R = 0x11;
GPIO_PORTA_AHB_DEN_R = GPIO_PIN_0 | GPIO_PIN_1;
UART0_CTL_R &= ~0x1;
// UART0_LCRH_R &= ~UART_LCRH_FEN;
UART0_IBRD_R = 0x30D;
UART0_FBRD_R = 0x010;
UART0_CC_R = 0x0;
UART0_LCRH_R = 0x00;
UART0_LCRH_R |= UART_LCRH_WLEN_8;
// UART0_LCRH_R |= UART_LCRH_FEN;
UART0_CTL_R |= UART_CTL_TXE | UART_CTL_UARTEN;
while(1)
{
while( (UART0_FR_R & 0x0020) != 0);
UART0_DR_R = 'a';
SysCtlDelay(1000000);
// while( (UART0_FR_R & 0x0020) != 0);
// UART0_DR_R = '\n';
}
}
Esto es lo que obtengo de putty
:
¿Cuál es la razón de tales caracteres de basura, independientemente de lo que se envíe al puerto UART? Probé otros puertos UART disponibles pero sin suerte.
Actualización: por alguna razón, reducir el reloj de MCU a 12MHz hizo el trabajo. ¿Alguien puede explicar esto y ponerlo como respuesta? Muchas gracias.