⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart_api.c

📁 ARM9系列,s3c2410实验代码
💻 C
字号:
/*
 *	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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -