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

📄 serial.c

📁 UCOSII V2.52 在三星SNDS4510开发板(国内基本所有的4510b的板子都是抄袭此公板设计的)上移植的成功例子
💻 C
字号:
#include <stdio.h>
#include <stdarg.h>

#include "s3c4510.h"
#include "datatype.h"

#include "serial.h"
#include "timer.h"

/*************************************************/
U8 UartGetch(U8 ch)
{
	if(!ch)
	{
		while(!(inportb(USTAT0)&RX_READY));
		return inportb(URXBUF0);			
	}
	else
	{
		while(!(inportb(USTAT1)&RX_READY));
		return inportb(URXBUF1);	
	}
}

/************************************************/
void UartSendByte(U8 ch, U8 data)
{
	if(!ch)
	{
		if(ch=='\n')
		{
			while(!(inportb(USTAT0)&TX_COMPLETE));
			Delay(10);
			outport(UTXBUF0, '\r');
		}
		while(!(inportb(USTAT0)&TX_COMPLETE));
		Delay(10);
		outport(UTXBUF0, data);		//must use outport
   	}
	else
	{
		if(ch=='\n')
		{
			while(!(inportb(USTAT1)&TX_COMPLETE));
			Delay(10);
			outport(UTXBUF1, '\r');
		}
		while(!(inportb(USTAT1)&TX_COMPLETE));
		Delay(10);
		outport(UTXBUF1, data);		
    }	
}
		
/****************************************************************************
【功能说明】向串行口发送一个字符串,ch为0向UART0发送,ch为1向UART1发送
****************************************************************************/
void UartSendString(U8 ch, char *pt)
{
    while(*pt)
    {		
    	UartSendByte(ch, *pt++);
    	Delay(20);
    }	    	
}

/****************************************************************************
【功能说明】以标准格式printf向串行口发送一个字符串
ch为0向UART0发送,ch为1向UART1发送。(如果不用vsprintf代码会减小很多!)
****************************************************************************/
void UartPrintf(U8 ch, char *fmt, ...)
{
    va_list ap;
    char string[256];    

    va_start(ap, fmt);
    vsprintf(string, fmt, ap);
    UartSendString(ch, string);
    va_end(ap);
}


void Printf(char *fmt, ...)
{
	va_list ap;
    char string[256];    

    va_start(ap, fmt);
    vsprintf(string, fmt, ap);
    UartSendString(USEDCOM, string);
    va_end(ap);
}

⌨️ 快捷键说明

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