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

📄 2410lib.c

📁 ads下2410的测试程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	ClkPara.pclk = 4;
	ClkPara.sclk = 1;
	set_pll();
}

/***************************************************************************
Function name: GetCpuClock
Parameter    : void
Description  : 获得系统的主频
Return	     : 返回系统的主频
Argument     : 
Autor & date :
****************************************************************************/
U32 GetCpuClock(void)
{
	return ClkPara.freq;
}

/***************************************************************************
Function name: GetMasterClock
Parameter    : void
Description  : 获得系统的PCLK频率
Return	     : 返回系统的PCLK频率
Argument     : 
Autor & date :
****************************************************************************/
U32 GetMasterClock(void)
{
	U32 clk;
	
	clk = GetCpuClock();
	
	if(rCLKDIVN&2)
		clk >>= 1;
		
	if(rCLKDIVN&1)
		clk >>= 1;
		
	return clk;
}

/***************************************************************************
Function name: Delay
Parameter    : ms : 延迟时间大小的参数	
Description  : 延迟函数
Return	     : void
Argument     : 以ms为延时单位
Autor & date :
****************************************************************************/
void Delay(U32 ms)
{
	U16 i;
	
	i = rTCNTB4>>1;		//1000us/2	
	rTCON &= ~(1<<20);
	rTCON |= (1<<20);	//停止再启动,重装初值,减计数
	
	while(ms--) {
		while(rTCNTO4>=i);
		while(rTCNTO4<i);
	}
}
/***************************************************************************************************/
/************************下面是串口通讯相关函数*****************************************************/
/***************************************************************************************************/

/***************************************************************************
Function name: SerialSwitch
Parameter    : port : 串口选择参数,0:串口1 1:串口2	
Description  : 进行串口切换
Return	     : 返回串口切换的参数,是串口1还是串口2
Argument     : 
Autor & date :
****************************************************************************/
static U16 SerialPortSel;

U16 SerialSwitch(U16 port)
{
#ifdef	SERIAL_PORTS_SWITCH
//	U16 old_sel = SerialPortSel;
	
	SerialPortSel = port?1:0;
#else
	SerialPortSel = 0;
#endif
	return SerialPortSel;
}

/***************************************************************************
Function name: SerialChgBaud
Parameter    : baud	: 串口波特率参数
Description  : 设置串口的波特率
Return	     : void
Argument     : 常用串口波特率范围:2400,4800,9600,19200,38400,115200等		
Autor & date :
****************************************************************************/
void SerialChgBaud(U32 baud)
{
	U32 mclk =  GetMasterClock();
	
	rUFCON0 = 0x0;		//FIFO disable
	rUFCON1 = 0x0;
	rUMCON0 = 0x0;
	rUMCON1 = 0x0;

//UART0
//	rULCON0  = 0x7;		//Normal,No parity,2 stop,8 bit
	rULCON0  = 0x3;		//Normal,No parity,1 stop,8 bit
	rUCON0   = 0x245;	//rx=edge,tx=level,disable timeout int.,enable rx error int.,normal,interrupt or polling
	rUBRDIV0 = ((int)(mclk/16./baud + 0.5) -1);

//UART1
//	rULCON1  = 0x7;		//Normal,No parity,2 stop,8 bit
	rULCON1  = 0x3;
	rUCON1   = 0x245;
	rUBRDIV1 = ((int)(mclk/16./baud + 0.5) -1);
}

/***************************************************************************
Function name: SerialTxChar
Parameter    : data	:要发送的数据
Description  : 主要进行串口发送
Return	     : void
Argument     : 通过SerialPortSel变量来选择是哪个串口发送数据	
Autor & date :
****************************************************************************/
void SerialTxChar(char data)
{
	if(SerialPortSel) {
		if(data=='\n') {
			while(!(rUTRSTAT1 & 0x4));
	    	//Delay(1);	//because the slow response of hyper_terminal 
			WrUTXH1('\r');
		}
		while(!(rUTRSTAT1 & 0x4)); //Wait until THR is empty.
//		Delay(1);
		WrUTXH1(data);
    } else {
		if(data=='\n') {
			while(!(rUTRSTAT0 & 0x4));
			//Delay(1);	//because the slow response of hyper_terminal 
			WrUTXH0('\r');
		}
		while(!(rUTRSTAT0 & 0x4));  //Wait until THR is empty.
		WrUTXH0(data);
    }
  }

/***************************************************************************
Function name: SerialRxReady
Parameter    : void
Description  : 检测串口接收缓冲区是否有数据
Return	     : 返回UTRSTATn[0]的状态
Argument     : 不管什么时候,只要接收缓冲寄存器包含有效数据,UTRSTATn[0]就
				自动被设置为1,否则为0
Autor & date :
****************************************************************************/
int SerialRxReady(void)
{
	if(SerialPortSel)
		return (rUTRSTAT1 & 0x1);	//Receive data ready
	else 
		return (rUTRSTAT0 & 0x1);	//Receive data ready
}

/***************************************************************************
Function name: SerialRxKey
Parameter    : void
Description  : 检测串口接收缓冲区是否有数据,有的话,返回缓冲区的数据
Return	     : 返回接收缓冲区的数据或则0
Argument     : 不管什么时候,只要接收缓冲寄存器包含有效数据,UTRSTATn[0]就
				自动被设置为1,否则为0
Autor & date :
****************************************************************************/
char SerialRxKey(void)
{
	if(SerialPortSel) {
		if((rUTRSTAT1 & 0x1)) //Receive data ready
			return RdURXH1();
	} else {
		if((rUTRSTAT0 & 0x1)) //Receive data ready
			return RdURXH0();
	}
	return 0;
}

/***************************************************************************
Function name: SerialTxString
Parameter    : *s : 要发送的字符串变量
Description  : 向串口发送字符串
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
void SerialTxString(char *s)
{
	 while(*s)
		SerialTxChar(*s++);
}

/***************************************************************************
Function name: putch
Parameter    : ch : 要发送的数据
Description  : 向串口发送一个数据
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
void putch(char ch)
{
	
	SerialTxChar(ch);

}

/***************************************************************************
Function name: puts
Parameter    : *str : 要发送的字符串指针变量
Description  : 向串口发送字符串
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
void puts(char *str)
{
	SerialTxString(str);
	
}

/***************************************************************************
Function name: kbhit
Parameter    : void
Description  : 检测串口接收缓冲区是否有数据
Return	     : 有,返回1,否返回0
Argument     : 
Autor & date :
****************************************************************************/
int kbhit(void)
{
	if(SerialRxReady())
		return 1;
	return 0;
}

/***************************************************************************
Function name: printf
Parameter    : *fmt : 数据显示的格式
Description  : 根据提供的格式显示变量的数值
Return	     : void
Argument     : 调用了ADS的库函数
Autor & date :
****************************************************************************/
//If you don't use vsprintf(), the code size is reduced very much.
typedef int *__va_list[1];
int vsprintf(char * /*s*/, const char * /*format*/, __va_list /*arg*/);

void printf(char *fmt, ...)
{
	va_list ap;
	char string[1024];
	
	va_start(ap,fmt);
	vsprintf(string,fmt,ap);
	puts(string);
	va_end(ap);
}

/***************************************************************************
Function name: getkey
Parameter    : void
Description  : 
Return	     : 如果串口接收缓冲区有数据,就返回数据,否则返回0
Argument     : 
Autor & date :
****************************************************************************/
int getkey(void)
{
	int c;
	
	c = SerialRxKey();
	if(c)
		return c;
	return 0;
//	return GetScanKey();
}

/***************************************************************************
Function name: getch
Parameter    : void
Description  : 等待从串口接收一个数据,否则一直循环
Return	     : 返回接收到的数据
Argument     : 
Autor & date :
****************************************************************************/
char getch(void)
{
	int c;
	
	while(1) {
		c = getkey();
		if(c) {
			//printf("get key!\n");
			return c;
		}
	}
	//return SerialRxChar();
}

/***************************************************************************
Function name: memcpy
Parameter    : *s1:目的地址 *s2:源地址 n:要拷贝的数据的长度
Description  : 将长度为n的数据拷贝从源地址拷贝到目的地址
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
void memcpy(void *s1, const void *s2, int n)
{
	int i;

	for (i = 0; i < n; i++)
		((char *)(s1))[i] = ((const char *)(s2))[i];
}
/**************************************************************************/

/***************************************************************************
Function name: strlen
Parameter    : *s:字符串指针
Description  : 计算字符串的长度
Return	     : void
Argument     : 
Autor & date :
****************************************************************************/
int strlen(const char *s)
{
	int i = 0;

	for(; *s; s++)
		i++;
	
	return i;
}
/***************************************************************************/

⌨️ 快捷键说明

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