UART实验--基于s5pv210嵌入式开发

UART实验

一、 实验目的:

掌握UART工作原理,初始化方式,收发数据方式。

二、 实验内容

自己填写所有实验题目

三、 实验仪器设备、工具软件

1.PC微机。
2.ubuntu14.04 64位。
3. arm-linux-gcc,minicom,tftpd-hpa,uboot

四、 实验过程和详细设置步骤

自己按实际填写

  1. 实现以查询方式,接收从电脑串口到来的数据,并将接收到数据加上前辍“Tsinghua-”后再输出到串口上(不得调用uboot函数printf),如 输入i love you! 处理后输出Tsinghua-i love you!
    期中:波特率设置为115200,8N1格式,使用PCLK时钟。
    void uart0_init(): 初始化uart0
    void uart0_send( char ch ):向串口发送一个字符
    void uart0_print_ch( char ch ):向串口打印一个字符,\n 或 \r 解释为回,车换行
    void uart0_recv( char * buf ):从串口读取一字符串,存入缓存buf中
    void uart0_print_str( char * str ):向串口打印字符串str
#define ulcon0 *(volatile unsigned*)0xe2900000
#define ucon0 *(volatile unsigned*)0xe2900004
#define ufcon0 *(volatile unsigned*)0xe2900008
#define umcon0 *(volatile unsigned*)0xe290000c
#define utrstat0 *(volatile unsigned*)0xe2900010
#define utxh0 *(volatile unsigned*)0xe2900020
#define urxh0 *(volatile unsigned*)0xe2900024
#define ubrdiv0 *(volatile unsigned*)0xe2900028
#define udivslot0 *(volatile unsigned*)0xe290002c
#define uintm0 *(volatile unsigned*)0xe2900038
#define gpa0con *(volatile unsigned*)0xe0200000

void uart0_init();
void uart0_send( char ch );
void uart0_print_ch( char ch );
void uart0_recv( char * buf );
void uart0_print_str( char * str );

void _start(void)
{
	uart0_init();
	uart0_print_str("Tsinghua-");
	uart0_recv( "i love you!\n" );
}

void uart0_init(void)//初始化uart0
{
	gpa0con = gpa0con & ~0xff | 0x22;
	ulcon0 = 0x3;
	ucon0 = 0x5 | 0x3<<8;
	ufcon0 = 0;
	umcon0 = 0;
	ubrdiv0 = 34;
	udivslot0 = 0xdddd;
	uintm0 = 0xf;
}

void uart0_send(char ch)//向串口发送一个字符
{
	while ((( utrstat0>>2)&0x1)!=0x1);
	utxh0=ch;
}

void uart0_print_ch(char ch)//向串口打印一个字符
{
	while((utrstat0 & 0x1) != 0x1);
	utxh0=ch;
}

void uart0_recv(char *buf)//从串口读取一字符串,存入缓存buf中
{
	int i=0;
	for(;buf[i]!='\0';i++)
	{
		if(buf[i]=='\n')
			{
				uart0_send('\r');
		}
		uart0_send(buf[i]);
	}
}

void uart0_print_str( char * str )//向串口打印字符串str
{
	int i=0;
	for(;;i++)
	{
		uart0_print_ch(str[i]);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_43787707/article/details/106415256