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

📄 44blib.c

📁 一个在KEIL公司的MDK3.20编译通过运行的基于S3C44B0X芯片的UCOSII源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    Uart_SendByte('\n');		//换行
}
//***************************************************************************

/****************************************************************************
【功能说明】从串口获取一个整型数
****************************************************************************/
int Uart_GetIntNum(void)
{
    char str[30];
    char *string=str;
    int base=10;

    int minus=0;
    int lastIndex;
    int result=0;
    int i;
    
    Uart_GetString(string);
    
    if(string[0]=='-')
    {
        minus=1;
        string++;
    }
    
    if(string[0]=='0' && (string[1]=='x' || string[1]=='X'))
    {
	base=16;
	string+=2;
    }
    
    lastIndex=strlen(string)-1;
    if( string[lastIndex]=='h' || string[lastIndex]=='H' )
    {
	base=16;
	string[lastIndex]=0;
	lastIndex--;
    }

    if(base==10)
    {
	result=atoi(string);
	result=minus ? (-1*result):result;
    }
    else
    {
	for(i=0;i<=lastIndex;i++)
	{
    	    if(isalpha(string[i]))
	    {
		if(isupper(string[i]))
		    result=(result<<4)+string[i]-'A'+10;
		else
		    result=(result<<4)+string[i]-'a'+10;
	    }
	    else
	    {
		result=(result<<4)+string[i]-'0';
	    }
	}
	result=minus ? (-1*result):result;
    }
    return result;
}
//***************************************************************************

/****************************************************************************
【功能说明】向串口发送一个字节的整型数
****************************************************************************/
void Uart_SendByte(int data)
{
    if(whichUart==0)
    {
	if(data=='\n')
	{
	    while(!(rUTRSTAT0 & 0x2));
//	    Delay(10);	//because the slow response of hyper_terminal 
	    WrUTXH0('\r');
	}
	while(!(rUTRSTAT0 & 0x2)); //Wait until THR is empty.
//	Delay(10);
	WrUTXH0(data);
    }
    else
    {
		while(!(rUTRSTAT1 & 0x2));  //Wait until THR is empty.
		rUTXH1=data;
    }	
}		
//***************************************************************************

/****************************************************************************
【功能说明】向串口送出一串字符
****************************************************************************/
void Uart_SendString(char *pt)
{
    while(*pt)
	Uart_SendByte(*pt++);
}
//***************************************************************************

/****************************************************************************
【功能说明】以标准输出格式向串口输出各种信息
****************************************************************************/
//if you don't use vsprintf(), the code size is reduced very much.
#define MAX_TBUF	10000
static char tbuf[MAX_TBUF]= {0, };

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

    va_start(ap,fmt);
    vsprintf(string,fmt,ap);
    Uart_SendString(string);
    va_end(ap);
    */
    
    va_list v_list;
	char *ptr;
	int i= 0;


	va_start(v_list, fmt);     // Initialize variable arguments. 
	vsprintf(tbuf, fmt, v_list ); 
	va_end(v_list);


	ptr= tbuf;
	while( (*ptr) && i<MAX_TBUF) {
		Uart_SendByte(*ptr);
		ptr++;	i++;
	}//while
}
//***************************************************************************

/****************************************************************************
【功能说明】蜂鸣器鸣叫time个100us
****************************************************************************/
void Beep(unsigned int time)
{
	rPDATE = (rPDATE | 0x08);
	Delay(time);		//延时若干个100us
	rPDATE = (rPDATE & 0x1f7);
}
//***************************************************************************

/****************************************************************************
【功能说明】检测四个按键,有任何一个按键按下就让蜂鸣器鸣叫,否则不鸣叫
****************************************************************************/
void Key_Speaker(void)
{
	unsigned int m;
	m = rPDATG;
	if((m & 0xf8) < 0xf8)	{rPDATE = (rPDATE | 0x08);}
	else	{rPDATE = (rPDATE & 0x1f7);}
}
//***************************************************************************

/****************************************************************************
【功能说明】四个LED 点亮/熄灭状态设置(LedStatus低四位电平高低对应着四个LED亮/熄)
****************************************************************************/
void Led_Set(int LedStatus)
{
    rPDATC=(rPDATC & 0x1f1) | ((LedStatus & 0x7)<<1);
}
//***************************************************************************

/****************************************************************************
【功能说明】LED来回闪烁显示 
****************************************************************************/
void Led_Disp(void)
{
	Led_Set(0x08);		//LED点亮/熄灭状态设置
	Delay(500);		//延时若干个100us
	Led_Set(0x04);		//LED点亮/熄灭状态设置
	Delay(500);		//延时若干个100us
	Led_Set(0x02);		//LED点亮/熄灭状态设置
	Delay(500);		//延时若干个100us
	Led_Set(0x01);		//LED点亮/熄灭状态设置
	Delay(500);		//延时若干个100us
	Led_Set(0x02);		//LED点亮/熄灭状态设置
	Delay(500);		//延时若干个100us
	Led_Set(0x04);		//LED点亮/熄灭状态设置
	Delay(500);		//延时若干个100us
	Led_Set(0x08);		//LED点亮/熄灭状态设置
	Delay(500);		//延时若干个100us
}
//***************************************************************************

/****************************************************************************
【功能说明】定时器启动
****************************************************************************/
void Timer_Start(int divider)  //0:16us,1:32us 2:64us 3:128us
{
    rWTCON=((MCLK/1000000-1)<<8)|(divider<<3);
    rWTDAT=0xffff;
    rWTCNT=0xffff;   

    // 1/16/(65+1),nRESET & interrupt  disable
    rWTCON=((MCLK/1000000-1)<<8)|(divider<<3)|(1<<5);	
}
//***************************************************************************

/****************************************************************************
【功能说明】定时器停止
****************************************************************************/
int Timer_Stop(void)
{
//    int i;
    rWTCON=((MCLK/1000000-1)<<8);
    return (0xffff-rWTCNT);
}
//***************************************************************************

/****************************************************************************
【功能说明】锁相环设置,修改系统主频
Fout = (8 + M_DIV) * Fin / [ (2+P_DIV) * (2^S_DIV) ]
****************************************************************************/
void ChangePllValue(int mdiv,int pdiv,int sdiv)
{
    rPLLCON = (mdiv << 12) | (pdiv << 4) | sdiv;
}

/****************************************************************************
【功能说明】
****************************************************************************/
void Cache_Flush(void)
{
    int i,saveSyscfg;
    
    saveSyscfg=rSYSCFG;

    rSYSCFG=SYSCFG_0KB; 		      
    for(i=0x10004000;i<0x10004800;i+=16)    
    {					   
	*((int *)i)=0x0;		   
    }
    rSYSCFG=saveSyscfg; 			    
}
//***************************************************************************

⌨️ 快捷键说明

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