UART裸机驱动设计

来源:互联网 发布:七微南风知我意2微盘 编辑:程序博客网 时间:2024/06/15 19:40

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 PCLK50000000  //PCLK=50M (start.S中设置了 FCLK:HCLK:PCLK = 1:4:8, FCLK=400M)#define  BAUD115200/********************************************************************函数名称: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;}



0 0