TM4C123G学习笔记(4)——串口UART

本文详细介绍了如何配置TI的TM4C123G微控制器的UART串口,使其能够通过类似printf的函数输出字符到电脑端。文章包括了配置过程中的关键步骤,如使能外设、设置引脚、配置时钟频率和波特率等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验目标

配置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 peripheral
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
		SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
	// set Rx/Tx pins as UART pins
    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);
    
	
	//以下配置可以使用UARTprintf
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);	//时钟16MHZ
 UARTStdioConfig(0,baud, 16000000);//参数分别是UART编号,波特率,UART时钟频率
//    UARTIntEnable(UART0_BASE,UART_INT_RX);	
	UARTIntRegister(UART0_BASE,DEBUG_Handler);
    UARTFIFODisable(UART0_BASE);
}






 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值