uart_api.c

来自「ARM9系列,s3c2410实验代码」· C语言 代码 · 共 174 行

C
174
字号
/*
 *	uart_api.c   -  uart api ( user-level )
 *	
 *	Author: 	li ming <admin@lumit.org>
 *	Date:		2005-6-11
 *	Copyleft:	http://www.lumit.org
 */
 
#include "uart_api.h"
#include <string.h>
#include <stdio.h>

#define NULL	0

/* ************************************************************************ */
int uart0_init( void )
{
	uart_open( UART0_BASE );	
	return 0;
}

int uart1_init( void )
{
	uart_open( UART1_BASE );	
	return 0;
}
/* ************************************************************************ */
int uart0_set_baudrate( int baud )
{
	uart_ioctl( UART_SELECT_CHANNEL, UART0_BASE );
	uart_ioctl( UART_SET_BAUDRATE, baud );
	return 0;
}

int uart1_set_baudrate( int baud )
{
	uart_ioctl( UART_SELECT_CHANNEL, UART1_BASE );
	uart_ioctl( UART_SET_BAUDRATE, baud );
	return 0;
}

/* ************************************************************************ */
int uart0_putchar( char ch )
{
	uart_ioctl( UART_SELECT_CHANNEL, UART0_BASE );
	uart_write( (unsigned char *)&ch, 1 );
	return 0;
}

int uart1_putchar( char ch )
{
	uart_ioctl( UART_SELECT_CHANNEL, UART1_BASE );
	uart_write( (unsigned char *)&ch, 1 );
	return 0;
}

char uart0_getchar( void )
{
	char ch;
	uart_ioctl( UART_SELECT_CHANNEL, UART0_BASE );
	uart_read( (unsigned char *)&ch, 1 );
	if( ch != '\r' )
		uart0_putchar( ch );
	return ch;
}

char uart1_getchar( void )
{
	char ch;
	uart_ioctl( UART_SELECT_CHANNEL, UART1_BASE );
	uart_read( (unsigned char *)&ch, 1 );
	if( ch != '\r' )
		uart1_putchar( ch );
	return ch;
}

int uart0_puts( char * string ) 
{
	uart_ioctl( UART_SELECT_CHANNEL, UART0_BASE );
	uart_write( (unsigned char *)string, strlen(string) );
	return 0;
}		
		
int uart1_puts( char * string )
{
	uart_ioctl( UART_SELECT_CHANNEL, UART1_BASE );
	uart_write( (unsigned char *)string, strlen(string) );	
	return 0;
}	

int uart0_gets( char * string )
{
	char ch;
	int i = 0;
	
	uart_ioctl( UART_SELECT_CHANNEL, UART0_BASE );
	
	while(1)
	{
		ch = uart0_getchar();
	
		*(string+i) = ch;
		
		if( ch == '\r' )
		{
			*(string+i) = '\0';
			break;
		}
		
		i++;
	} 
	
	return 0;
}	

int uart1_gets( char * string )
{
	char ch;
	int i = 0;
	
	uart_ioctl( UART_SELECT_CHANNEL, UART1_BASE );
	
	while(1)
	{
		ch = uart1_getchar();
	
		*(string+i) = ch;
		
		if( ch == '\r' )
		{
			*(string+i) = '\0';
			break;
		}
		
		i++;
	} 
	
	return 0;
}	
			
int uart_test( void )
{	
	int i = 0;
	char ch;
	char str[64];
	char read[64];
	
	uart0_init();
	uart1_init();
		
	uart0_set_baudrate( BAUD_19200 );
	uart1_set_baudrate( BAUD_19200 );
		
	uart0_puts( "Please use UART1 on lumit4510 board to test this program! \r\n" );
		
	while(1)
	{
		sprintf( str, "\r\n-----------------\r\nUART Test No.%d: \r\n", i++ ); 
		uart1_puts( str );
		
		uart1_puts( "Please input a char: " ); 
		ch = uart1_getchar();	
		sprintf( str, "\r\nYou input char: %c \r\n", ch ); 
		uart1_puts( str );
		
		uart1_puts( "Please input a string: " ); 
		uart1_gets( read );
		sprintf( str, "\r\nYou input string: %s ", read ); 
		uart1_puts( str ); 
	}	
	
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?