UART裸机驱动设计

本文介绍了在TX2440开发板上配置和使用UART0进行裸机驱动设计的过程,包括使能UART0、设置8位数据位、1位停止位、无奇偶校验的传输参数以及波特率115200。同时,讨论了UART使用的PCLK时钟参数。

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

UART裸机驱动设计主要在于配置各寄存器的值;

开发板型号: TX2440;

UART 使能: 使能UART0;

传 输 参 数: 8位数据位,1位停止位,无奇偶校验,波特率115200;

时 钟 参 数: UART使用系统的 PCLK.

/*******************************************************************
*版权所有(C)2015,ZJU
*
*文件名称:uart.c
*内容摘要:关于UART的配置
*其它说明:开发板型号:TX2440	 
*	   UART0:RXD0 -- GPH3 , TXD0 -- GPH2
*当前版本:V1.0
*作    者:Frank
*完成日期:2015.12.14
*
*******************************************************************/

#define  GPHCON		(*(volatile unsigned long *)0x56000070)	//Configures the pins of port H
#define  ULCON0		(*(volatile unsigned long *)0x50000000) //UART channel 0 line control register
#define  UCON0		(*(volatile unsigned long *)0x50000004) //UART channel 0 control register
#define  UTRSTAT0	(*(volatile unsigned long *)0x50000010) //UART channel 0 Tx/Rx status register
#define  UTXH0		(*(volatile unsigned long *)0x50000020) //UART channel 0 transmit buffer register
#define  URXH0		(*(volatile unsigned long *)0x50000024)	//UART channel 0 receive buffer register
#define  UBRDIV0	(*(volatile unsigned long *)0x50000028) //Baud rate divisior register 0

#define	 PCLK	50000000  //PCLK=50M (start.S中设置了 FCLK:HCLK:PCLK = 1:4:8, FCLK=400M)
#define  BAUD	115200


/*******************************************************************
*函数名称:Uart_Init()
*功能描述:UART初始化函数
*其他说明:
*创建日期:2015.12.14
*******************************************************************/
void Uart_Init(void)
{
	/*配置引脚功能*/
	GPHCON &= (~(0xf << 4));	
	GPHCON |= (0xa << 4);		//GPH2设为TXD0,GPH3设为RXD0
	
	/*设置数据格式*/
	ULCON0 = 0b11;			//8位数据位,1位停止位,无奇偶校验
	
	/*设置工作模式*/
	UCON0 = 0b0101;			//发送和接收均采用轮询方式
	
	/*设置波特率*/
	UBRDIV0 = (int)(PCLK/(BAUD*16) - 1);	//波特率设置为115200
}


/*******************************************************************
*函数名称:Puts()
*功能描述:字符发送函数
*输入形参:ch
*返 回 值:无
*其他说明:ch为需要发送的字符
*创建日期:2015.12.14
*******************************************************************/
void Puts(unsigned char ch)
{
	while (!(UTRSTAT0 & (1 << 2)));
	UTXH0 = ch;	
}


/*******************************************************************
*函数名称:Gets()
*功能描述:字符接收函数
*输入形参:无
*返 回 值:ch
*其他说明:ch为接收到的字符
*创建日期:2015.12.14
*******************************************************************/
unsigned char Gets(void)
{
	char ch;
	
	while (!(UTRSTAT0 & (1 << 0)));
	ch = URXH0;
	
	return ch;	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值