亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 2410lib.c

?? 可以在優龍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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一三区三区四区免费在线看| 亚洲精品国久久99热| 成人av网站在线观看| 久久综合久色欧美综合狠狠| 久久99日本精品| 精品国产凹凸成av人导航| 国产不卡视频在线观看| 亚洲色图视频网| 欧美体内she精视频| 水野朝阳av一区二区三区| 欧美一区二区三区影视| 国内精品在线播放| 日本一区二区三区高清不卡| av色综合久久天堂av综合| 一区二区三区在线视频观看58| 欧美视频精品在线| 麻豆精品蜜桃视频网站| 日本一区二区高清| 91成人免费网站| 蜜臀av性久久久久蜜臀aⅴ| 久久久天堂av| 在线亚洲人成电影网站色www| 婷婷一区二区三区| 国产亚洲一区字幕| 91福利国产精品| 紧缚捆绑精品一区二区| **欧美大码日韩| 日韩一区二区三区av| 国产精品羞羞答答xxdd| 亚洲成在人线免费| 国产欧美一区二区精品忘忧草| 91美女片黄在线| 久久99精品国产91久久来源| 国产精品久久午夜夜伦鲁鲁| 欧美精品久久99| 成人一区二区三区视频在线观看| 亚洲国产综合在线| 久久久久久一二三区| 欧洲视频一区二区| 国模冰冰炮一区二区| 一个色妞综合视频在线观看| 久久嫩草精品久久久精品| 欧美视频一区在线| 成人h版在线观看| 久久国产免费看| 亚洲成av人片| 自拍偷拍欧美激情| 久久久精品免费免费| 91精品国产综合久久久久| 9人人澡人人爽人人精品| 麻豆精品久久久| 亚洲一二三专区| 国产精品私人影院| 欧美成人三级在线| 欧美年轻男男videosbes| 91在线播放网址| 丁香激情综合五月| 美女视频黄免费的久久| 亚洲不卡av一区二区三区| 亚洲天天做日日做天天谢日日欢 | 欧美大片在线观看一区| 欧美视频一区在线观看| 一本久久综合亚洲鲁鲁五月天 | 2022国产精品视频| 欧美精品1区2区3区| 91久久精品一区二区三区| av电影一区二区| 成人激情av网| 成人高清免费观看| 国产福利精品导航| 国产精品99久久久| 国产美女精品在线| 国产一二精品视频| 国内外精品视频| 国产露脸91国语对白| 美国毛片一区二区| 男女男精品视频网| 伦理电影国产精品| 精品一区二区三区久久| 韩国v欧美v日本v亚洲v| 精品系列免费在线观看| 国产一区二区在线看| 国产在线精品免费| 国产精品羞羞答答xxdd| 国产成人8x视频一区二区| 成人一二三区视频| 99久久99久久免费精品蜜臀| 一本久久综合亚洲鲁鲁五月天 | 一区二区三区在线免费视频| 亚洲免费看黄网站| 一区二区理论电影在线观看| 一区二区三国产精华液| 日韩国产欧美三级| 国内精品久久久久影院色 | 麻豆精品一区二区三区| 韩国av一区二区三区四区 | 天堂精品中文字幕在线| 日本亚洲视频在线| 韩国三级在线一区| 99久久精品一区二区| 欧洲另类一二三四区| 日韩免费高清av| 国产日韩综合av| 一区二区三区在线观看动漫 | 久久爱www久久做| 国产精品99久久久久久有的能看| 成人精品国产福利| 欧美天天综合网| 欧美精品一区二区三区在线| 国产精品毛片无遮挡高清| 一区二区欧美精品| 国产真实乱子伦精品视频| 成人av电影免费观看| 欧美精品vⅰdeose4hd| 久久综合九色综合欧美亚洲| 国产精品久久久久久久蜜臀| 亚欧色一区w666天堂| 国产精品自拍三区| 欧美在线看片a免费观看| 日韩美女一区二区三区四区| 日韩毛片一二三区| 另类小说图片综合网| 99精品久久久久久| 日韩免费视频一区| 一区二区不卡在线播放 | 蜜桃av一区二区三区电影| 成人久久18免费网站麻豆 | 国产ts人妖一区二区| 欧美性大战久久久| 欧美韩国日本一区| 肉色丝袜一区二区| av亚洲精华国产精华精华 | 91精品蜜臀在线一区尤物| 国产情人综合久久777777| 亚洲不卡一区二区三区| 99久久99久久精品国产片果冻| 日韩亚洲欧美高清| 一区二区三区精密机械公司| 国产aⅴ综合色| 日韩免费看的电影| 婷婷开心激情综合| 色www精品视频在线观看| 国产欧美日韩亚州综合 | 91香蕉视频污在线| 久久久久久久久久电影| 日韩av一区二区在线影视| 在线视频国产一区| 国产精品福利一区二区| 国产精品一二三四| 精品欧美一区二区久久| 日本在线观看不卡视频| 欧美三级乱人伦电影| 亚洲精品免费在线观看| 成人精品视频一区二区三区 | 欧美日韩国产美| 一区二区三区四区不卡在线| 成人av电影免费观看| 日本一区二区三区四区在线视频| 欧美在线影院一区二区| 亚洲国产高清aⅴ视频| 国产精品夜夜嗨| 国产视频不卡一区| 国产精品亚洲人在线观看| 久久久久久久久蜜桃| 国产成人综合视频| 国产亚洲视频系列| 国产大陆精品国产| 国产日韩欧美精品综合| 国产一区二区三区观看| 久久久久久久久久久黄色| 国产精品77777| 欧美激情在线看| a美女胸又www黄视频久久| ㊣最新国产の精品bt伙计久久| k8久久久一区二区三区| 综合久久综合久久| 欧美性淫爽ww久久久久无| 亚洲高清一区二区三区| 91精品国产麻豆国产自产在线| 午夜久久电影网| 欧美一级日韩免费不卡| 激情欧美日韩一区二区| 国产午夜精品福利| 99国产精品久久久| 亚洲一区在线视频观看| 欧美一区二区在线免费观看| 久久成人免费网站| 中文av一区二区| 91麻豆国产香蕉久久精品| 亚洲一区在线看| 精品少妇一区二区三区在线播放 | jlzzjlzz国产精品久久| 亚洲丝袜美腿综合| 欧美撒尿777hd撒尿| 久久精品久久精品| 日本一区二区高清| 欧美日韩在线观看一区二区 | 欧美日韩一区二区三区不卡 | 视频一区欧美精品| 2019国产精品|