TM4C123G学习笔记(4)——串口UART
实验目标
配置TM4C123G的板载UART串口,使其能用类似printf的函数与输出字符到电脑端。
配置过程
1、TM4C123G的串口结构图

2、引脚映射表

3、开发板原理图

4、配置流程和相关函数
从上述资料可以看到,实验中用到的是UART0,Rx对应PA0,Tx对应PA1
1)使能URAT外设
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
2)设置输入输入引脚
GPIOPinConfigure(GPIO_PA0_U0RX);//RX=GPIO_PIN_0
GPIOPinConfigure(GPIO_PA1_U0TX);//TX=GPIO_PIN_1
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
3)设置UART时钟频率
设置时钟16MHZ
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
4)设置波特率
UARTStdioConfig(0,baud, 16000000);//参数分别是UART编号,波特率,UART时钟频率
5)另一种串口设置方法
3)和4)完成了重定向,类似在STM32中stdio对printf的重定向,有所不同的是,Tiva C重定向后的函数是UARTprintf(),且需要包uartstdio.c文件
3)和4)的一种替代方法,但是在用uartstdio.c对printf重定向时不能用以下方法设置UART
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet() , baud, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
代码
串口配置头文件
#ifndef __MY_TIVA_UART_H
#define __MY_TIVA_UART_H
#include "sys.h"void Uart_Init(uint32_t baud);#endif
串口配置c文件
#include "my_Tiva_uart.h"void DEBUG_Handler(void)
{uint32_t status=0;
// uint8_t res=0;UARTIntClear( UART0_BASE , UART_INT_OE );UARTRxErrorClear( UART0_BASE );status=UARTIntStatus(UART0_BASE, true);UARTIntClear(UART0_BASE,status);}void Uart_Init(uint32_t baud)
{//enable the UART peripheralSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);// set Rx/Tx pins as UART pinsGPIOPinConfigure(GPIO_PA0_U0RX);//RX=GPIO_PIN_0GPIOPinConfigure(GPIO_PA1_U0TX);//TX=GPIO_PIN_1GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);//以下配置可以使用UARTprintf
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC); //时钟16MHZUARTStdioConfig(0,baud, 16000000);//参数分别是UART编号,波特率,UART时钟频率
// UARTIntEnable(UART0_BASE,UART_INT_RX); UARTIntRegister(UART0_BASE,DEBUG_Handler);UARTFIFODisable(UART0_BASE);
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
