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

📄 44blib.c

📁 S3C44b0STEPMOTOR步进电机驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    char *string2 = string;
    char c;
    
    while ((c = Uart_Getch(port)) != '\r')
    {
		if (c == '\b')
		{
	    	if ((int)string2 < (int)string)
	    	{
				Uart_Printf(port,"\b \b");
				string--;
	    	}
		}
		else 
		{
	    	*string++=c;
	    	Uart_SendByte(c,port);
		}
    }
    *string='\0';
    Uart_SendByte('\n',port);
}

/*
*************************************************************************************************************
- 函数名称 : Uart_GetIntNum(void)
- 函数说明 : 得到串口初始号
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
int Uart_GetIntNum(char port)
{
    char str[30];
    char *string = str;
    int base = 10;
    int minus = 0;
    int lastIndex;
    int result = 0;
    int i;
    
    Uart_GetString(string,port);
    
    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;
}

/*
*************************************************************************************************************
- 函数名称 : Uart_SendByte(int data)
- 函数说明 : 串口发送字节
- 输入参数 : data
- 输出参数 : 无
*************************************************************************************************************
*/
void Uart_SendByte(int data,char port)
{
    if (port == 0)
    {
		if (data == '\n')
		{
	    	while(!(rUTRSTAT0 & 0x2));
	    	//Delay(1);									                                 //由于高端的较慢响应 
	    	WrUTXH0('\r');
		}
		
		while(!(rUTRSTAT0 & 0x2)); 						                                  //一直等到 THR 为空
		//Delay(1);
		WrUTXH0(data);
    }
    else
    {
		if(data=='\n')
		{
    	    while(!(rUTRSTAT1 & 0x2));
	    	//Delay(10);								                                //由于高端的较慢响应
	    	rUTXH1='\r';
		}
		
		while(!(rUTRSTAT1 & 0x2));  					                                  //一直等到 THR 为空
		//Delay(10);
		rUTXH1=data;
    }	
}
		
/*
*************************************************************************************************************
- 函数名称 : Uart_SendString(char *pt)
- 函数说明 : 串口发送字符串
- 输入参数 : pt
- 输出参数 : 无
*************************************************************************************************************
*/
void Uart_SendString(char *pt,char port)
{
    while(*pt)
	Uart_SendByte(*pt++,port);
}

/*
*************************************************************************************************************
- 函数名称 : Uart_Printf(char *fmt,...)
- 函数说明 : 串口打印字符
- 输入参数 : fmt ...
- 输出参数 : 无
*************************************************************************************************************
*/
void Uart_Printf(char port,char *fmt,...)                         //如果您不使用 vsprintf(), 代码量将大幅减少
{
    va_list ap;
    char string[256];
   
    va_start(ap,fmt);
    vsprintf(string,fmt,ap);
    Uart_SendString(string,port);
    va_end(ap);
}

/*
*************************************************************************************************************
- 函数名称 : ChangePllValue(int mdiv,int pdiv,int sdiv)
- 函数说明 : 改变PLL的值
- 输入参数 : int mdiv,int pdiv,int sdiv
- 输出参数 : 无
*************************************************************************************************************
*/
void ChangePllValue(int mdiv,int pdiv,int sdiv)
{
    rPLLCON = (mdiv<<12)|(pdiv<<4)|sdiv;
}

/*
*************************************************************************************************************
- 函数名称 : malloc
- 函数说明 : 动态分配函数
- 输入参数 : nbyte
- 输出参数 : 无
*************************************************************************************************************
*/
void * malloc(unsigned nbyte) 
{
    void *returnPt=mallocPt;

    mallocPt = (int *)mallocPt + nbyte/4 + ((nbyte%4)>0);                                        //对齐4字节

    if ((int)mallocPt > HEAPEND)
    {
		mallocPt = returnPt;
		return NULL;
    }
    return returnPt;
}

/*
*************************************************************************************************************
- 函数名称 : free
- 函数说明 : 动态释放函数
- 输入参数 : *pt
- 输出参数 : 无
*************************************************************************************************************
*/
void free(void *pt)

{
    mallocPt=pt;
}

/*
*************************************************************************************************************
- 函数名称 : Cache_Flush(void)
- 函数说明 : 高速缓存清空
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Cache_Flush(void)
{
    int i,saveSyscfg;
    
    saveSyscfg = rSYSCFG;
    rSYSCFG = SYSCFG_0KB; 						//把CACHE变为内部RAM		      
    
    for (i=0x10004000;i<0x10004800;i+=16)    
    {					   
		*((int *)i) = 0x0;		   
    }
    rSYSCFG = saveSyscfg; 			    
}

/*
*************************************************************************************************************
- 函数名称 : Timer_Start
- 函数说明 : 启动定时器
- 输入参数 : divider
- 输出参数 : 无
*************************************************************************************************************
*/
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);	
}

/*
*************************************************************************************************************
- 函数名称 : Timer_Stop
- 函数说明 : 停止定时器
- 输入参数 : 无
- 输出参数 : (0xffff-rWTCNT)
*************************************************************************************************************
*/
int Timer_Stop(void)
{
    rWTCON = ((MCLK/1000000-1)<<8);
    return (0xffff-rWTCNT);
}

/*
*************************************************************************************************************
*-                            				结束文件													   -*
*************************************************************************************************************
*/

⌨️ 快捷键说明

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