Escolar Documentos
Profissional Documentos
Cultura Documentos
Capítulo IV - UART
Capítulo IV - UART
UART
UNIVERSAL ASYNCHRONOUS RECEIVER
TRANSMITTER
UART na Placa Tiva Launchpad
Interface de hardware implementado de um canal RS232 assíncrono. O
TM4C123 tem oito portas UART.
Observação: O LaunchPad envia o canal UART0 através do cabo USB, por isso, não
será necessário o circuito mostrado acima. No lado do PC , o canal serial torna-se
uma porta COM virtual (COM3, COM8, COM13, etc).
UM FRAME DE DADOS SERIAIS:
void ConfigureUART(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // Habilita a PORTA.
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); // Habilita UART0
GPIOPinConfigure(GPIO_PA0_U0RX); // Configura os pinos da GPIO para a UART0
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTCharPut(UART0_BASE, 'A');
UARTCharPut(UART0_BASE, 0x30); //caracter 0x30 na tab. ASCII
UARTCharPut(UART0_BASE, 70); //caracter 70 na tab. ASCII
UARTCharPut(UART0_BASE, 0x0A); //nova linha
UARTCharPut(UART0_BASE, 0x07); //bell
UARTprintf("\n%d", 70);
UARTprintf("\n%c", 70); //caracter 70 na tab. ASCII
UARTprintf("\n%c", 'Y');
UARTprintf("\n%4d", 70);
UARTprintf("\n%04d", 70);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
UARTCharPut(UART0_BASE, 'A');
x=UARTCharGet(UART0_BASE);
x=UARTgetc();
UARTprintf("\nEscolha a cor do LED:\n");
GPIOPinConfigure()
A função GPIOPinConfigure() (pág. 265 datasheet da Tivaware)
configura os pinos que serão usados como função alternativa, ou
seja, não serão usados como I/O.
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART()
A função GPIOPinTypeUART() (pág. 282 datasheet da Tivaware)
configura os pinos que serão usados na UART.
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 |
GPIO_PIN_1);
UARTClockSourceSet()
A função UARTClockSourceSet() (pág. 566 datasheet da Tivaware)
configura a fonte de clock que será usada como base de tempo
para a UART selecionada.
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
UARTStdioConfig()
A função UARTStdioConfig( ) está vinculada à biblioteca uartstdio.h,
localizada na pasta utils da Tivaware. Ela configura qual a UART
será usada, o baud rate e a frequência do clock de referência.
UARTCharPut(UART0_BASE, 'A');
UARTCharPut(UART0_BASE, 0x30);//caractere 0 tab. ASCII
UARTCharPut(UART0_BASE, 0x0A); //nova linha
UARTCharGet()
A função UARTCharGet() (pág. 564 datasheet da Tivaware) recebe
um caractere vindo da UART especificada e o retorna para quem
a chamou.
x=UARTCharGet(UART0_BASE); ou
x=UARTgetc(); //uartstdio.h
UARTprintf()
A função UARTprintf( ) está vinculada à biblioteca uartstdio.h. Ela
escreve uma string na UART configurada.
void ConfigureUART(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // Habilita a PORTA.
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); // Habilita UART0
GPIOPinConfigure(GPIO_PA0_U0RX); // Configura os pinos da GPIO para a UART0
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1);
while(1)
{
x=UARTCharGet(UART0_BASE); // ou x=UARTgetc();
switch (x)
{
case 'R': case 'r':
LEDS=RED;
break;
case 'G': case 'g':
LEDS=GREEN;
break;
case 'B': case 'b':
LEDS=BLUE;
break;
default:
LEDS=0;
}
}
}
Configurações do Tera Term
SETUP Fonte
Salvar “teraterm.ini” ou
criar uma configuração
personalizada com outro
nome .ini
EXERCÍCIOS:
1- Melhore o exemplo 2, adicionando outras cores, conforme mostra a figura abaixo:
2- Faça um programa que crie um contador decimal, o qual inicia em zero e usa as
teclas ‘+’, ‘-’ e ‘Z’(‘z’) para incrementar, decrementar e zerar o mesmo, respectivamente.
O valor da contagem deve ser mostrado tanto na placa como no TeraTerm.
TRAVAS:
Trava ‘+’ em 9;
Trava ‘-’ em 0.
EXERCÍCIOS:
3- Faça um programa que verifique uma senha de 5 dígitos alfanuméricos. O usuário
tem 3 tentativas (monitoradas) para acertar a senha. Os leds devem acender conforme
a descrição abaixo:
Azul: digitação
Verde: senha correta
Vermelho: senha
incorreta (2s)