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

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

?? 2410lib.c

?? 英蓓特2410開發箱的軟件包
?? C
?? 第 1 頁 / 共 2 頁
字號:
        {
            if( (int)string2 < (int)pString )
            {
                uart_printf("\b \b");
                pString--;
            }
        }
        else 
        {
            *pString++ = c;
            uart_sendbyte(c);
        }
    }
    *pString='\0';
    uart_sendbyte('\n');
}

/*********************************************************************************************
* name:		uart_getintnum
* func:		Get a numerical (Dec - default or Hex fromat) from the uart, with or without a signed
* para:		none
* ret:		nResult: the valid number which user input from uart
* 					-- Dec format number (default)
* 					-- Hex format number ('H/h' suffix or '0x' ahead)
* modify:
* comment:		
*********************************************************************************************/
int uart_getintnum(void)
{
    char str[30];
    char *pString = str;
    int base     = 10;
    int minus    = 0;
    int nResult   = 0;
    int lastIndex;    
    int i;
    
    uart_getstring(pString);
    
    if(pString[0]=='-')
    {
        minus = 1;
        pString++;
    }
    
    if(pString[0]=='0' && (pString[1]=='x' || pString[1]=='X'))
    {
        base    = 16;
        pString += 2;
    }
    
    lastIndex = strlen(pString) - 1;
    
    if(lastIndex<0)
        return -1;
    
    if(pString[lastIndex]=='h' || pString[lastIndex]=='H' )
    {
        base = 16;
        pString[lastIndex] = 0;
        lastIndex--;
    }

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

/*********************************************************************************************
* name:		uart_sendbyte
* func:		Send one byte to uart channel
* para:		nData	-- 	input, byte
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void uart_sendbyte(int nData)
{
    if(f_nWhichUart==0)
    {
        if(nData=='\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(nData);
    }
    else if(f_nWhichUart==1)
    {
        if(nData=='\n')
        {
            while(!(rUTRSTAT1 & 0x2));
            delay(10);					//because the slow response of hyper_terminal 
            rUTXH1 = '\r';
        }
        while(!(rUTRSTAT1 & 0x2));		//Wait until THR is empty.
        delay(10);
        rUTXH1 = nData;
    }   
    else if(f_nWhichUart==2)
    {
        if(nData=='\n')
        {
            while(!(rUTRSTAT2 & 0x2));
            delay(10);					//because the slow response of hyper_terminal 
            rUTXH2 = '\r';
        }
        while(!(rUTRSTAT2 & 0x2));		//Wait until THR is empty.
        delay(10);
        rUTXH2 = nData;
    }       
}               

/*********************************************************************************************
* name:		uart_sendstring
* func:		Send string to uart channel
* para:		pString	-- 	input, string
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void uart_sendstring(char *pString)
{
    while(*pString)
        uart_sendbyte(*pString++);
}

/*********************************************************************************************
* name:		uart_printf
* func:		print format string
* para:		fmt	-- 	input,  
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
//If you don't use vsprintf(), the code size is reduced very much.
void uart_printf(char *fmt,...)
{
    va_list ap;
    char pString[256];

    va_start(ap,fmt);
    vsprintf(pString,fmt,ap);
    uart_sendstring(pString);
    va_end(ap);
}

/*********************************************************************************************
* name:		timer_start
* func:		start timer
* para:		nDivider	-- 	input, 0:16us,1:32us 2:64us 3:128us
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void timer_start(int divider)  //0:16us,1:32us 2:64us 3:128us
{
    rWTCON = ((PCLK/1000000-1)<<8)|(divider<<3); //Watch-dog timer control register
    rWTDAT = 0xffff;							 //Watch-dog timer data register
    rWTCNT = 0xffff;							 //Watch-dog count register

	//Watch-dog timer enable & interrupt  disable
//	rWTCON = rWTCON |(1<<5) & !(1<<2);	 //?
    rWTCON = rWTCON | (1<<5) | ~(1<<2);  //May 06, 2002 SOP
}

/*********************************************************************************************
* name:		timer_stop
* func:		stop timer
* para:		none
* ret:			--	int, timer count
* modify:
* comment:		
*********************************************************************************************/
int timer_stop(void)
{
    rWTCON = ((PCLK/1000000-1)<<8);
    return (0xffff - rWTCNT);
}


//========================[ MPLL ]=================================
void change_value_MPLL(int nMdiv,int nPdiv,int nSdiv)
{
    rMPLLCON = (nMdiv<<12) | (nPdiv<<4) | nSdiv;
}


//========================[ HCLK, PCLK ]===========================
void change_clock_divider(int nHdiv,int nPdiv)
{
     // nHdiv,nPdiv FCLK:HCLK:PCLK
     //     0,0         1:1:1 
     //     0,1         1:1:2 
     //     1,0         1:2:2
     //     1,1         1:2:4
    rCLKDIVN = (nHdiv<<1) | nPdiv;    
    
    if(nHdiv)
        MMU_SetAsyncBusMode();
    else 
        MMU_SetFastBusMode();
}


//========================**[ UPLL ]==============================*
void ChangeUPllValue(int nMdiv,int nPdiv,int nSdiv)
{
    rUPLLCON = (nMdiv<<12) | (nPdiv<<4) | nSdiv;
}


//========================*[ General Library ]=====================*
void * smalloc(unsigned nByte) 
//Very simple; Use malloc() & free() like Stack
//void *malloc_pt=Image_RW_Limit;
{
    void *pReturnPt = Image_RW_Limit;

    malloc_pt = (int *)malloc_pt+nByte/4+((nByte%4)>0); //To align 4byte

    if( (int)malloc_pt > HEAPEND )
    {
        malloc_pt = pReturnPt;
        return NULL;
    }
    return pReturnPt;
}

//-------------------------------------------------------------------
void sfree(void *pString)
{
    malloc_pt = pString;
}

/*********************************************************************************************
* name:		delay
* func:		delay time
* para:		nTime -- input, nTime=0: nAdjust the delay function by WatchDog timer.
*						    nTime>0: the number of loop time, 100us resolution.
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void delay(int nTime)
{
      // time=0: adjust the Delay function by WatchDog timer.
      // time>0: the number of loop time
      // resolution of time is 100us.
    int i,adjust=0;
    if(nTime==0)
    {
        nTime   = 200;
        adjust = 1;
        delayLoopCount = 400;
		//PCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable
        rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); 
        rWTDAT = 0xffff;                              //for first update
        rWTCNT = 0xffff;                              //resolution=64us @any PCLK 
        rWTCON = ((PCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start
    }
    for(;nTime>0;nTime--)
        for(i=0;i<delayLoopCount;i++);
    if(adjust==1)
    {
        rWTCON = ((PCLK/1000000-1)<<8)|(2<<3);   //Watch-dog timer stop
        i = 0xffff - rWTCNT;                     //1count->64us, 200*400 cycle runtime = 64*i us
        delayLoopCount = 8000000/(i*64);         //200*400:64*i=1*x:100 -> x=80000*100/(64*i)   
    }
}

/*********************************************************************************************
* name:		__gccmain
* func:		the entry point of gcc library
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void __gccmain(void)
{
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网址在线看| 国产精品资源在线| 欧美中文字幕一区二区三区亚洲| 中文字幕一区二区三区乱码在线 | 午夜天堂影视香蕉久久| 欧美性猛交xxxxxx富婆| 日本不卡免费在线视频| 精品久久人人做人人爽| 国内外精品视频| 国产人妖乱国产精品人妖| a美女胸又www黄视频久久| 亚洲一区二区欧美日韩| 欧美一区永久视频免费观看| 国内不卡的二区三区中文字幕 | 99国产一区二区三精品乱码| 日本成人中文字幕| 国产91精品露脸国语对白| 日韩毛片视频在线看| 欧美日韩aaaaa| 韩国毛片一区二区三区| 亚洲欧美在线视频| 欧美精品久久久久久久久老牛影院| 欧美aa在线视频| 中文字幕精品一区二区精品绿巨人 | 亚洲免费观看高清| 欧美欧美午夜aⅴ在线观看| 狠狠色丁香婷婷综合| 亚洲激情五月婷婷| 日韩一区二区在线观看| av激情成人网| 日韩av一级电影| 国产精品进线69影院| 欧美一卡二卡在线观看| 99精品视频在线免费观看| 日韩精品一级二级| 国产精品乱人伦一区二区| 欧美人妇做爰xxxⅹ性高电影| 国产美女精品人人做人人爽| 亚洲自拍与偷拍| 欧美激情一区在线观看| 制服丝袜激情欧洲亚洲| 97久久精品人人做人人爽50路| 青青草成人在线观看| 一区二区成人在线视频| 国产欧美精品一区| 欧美一区二区免费观在线| av成人免费在线| 久久se这里有精品| 亚洲国产一区二区三区| 国产精品久久看| 久久综合色之久久综合| 欧美一区国产二区| 欧美视频一区二区三区在线观看 | 久久综合九色综合欧美98| 欧美日韩在线三级| 91麻豆精品在线观看| 国产福利一区二区三区视频在线 | 91福利在线导航| 成人在线视频首页| 国产乱码一区二区三区| 久99久精品视频免费观看| 婷婷成人激情在线网| 亚洲国产综合色| 一区二区三区四区国产精品| 欧美国产日韩亚洲一区| 久久免费精品国产久精品久久久久| 欧美三区在线观看| 欧美综合亚洲图片综合区| 99re亚洲国产精品| caoporn国产精品| 欧美一级日韩不卡播放免费| 在线一区二区三区四区五区| 91九色最新地址| caoporm超碰国产精品| 懂色一区二区三区免费观看| 国产精品一区一区三区| 国产激情一区二区三区四区| 国产精品18久久久久久久网站| 精品一区二区三区免费观看 | 国产一区二区看久久| 精品一区免费av| 精品一区二区在线观看| 国产美女娇喘av呻吟久久| 国产一区二区不卡老阿姨| 国产高清视频一区| www.日韩在线| 欧美一a一片一级一片| 欧美三级中文字幕在线观看| 91.com在线观看| 欧美一区二区三区婷婷月色| 欧美电视剧在线观看完整版| 久久综合久久综合亚洲| 欧美国产国产综合| 亚洲免费av在线| 亚洲成在人线免费| 日本美女一区二区三区视频| 国产一区二区三区久久久 | 亚洲精选视频免费看| 一二三四区精品视频| 日韩av高清在线观看| 韩国毛片一区二区三区| av成人免费在线| 欧美日本乱大交xxxxx| 精品久久人人做人人爱| 国产精品久久免费看| 亚洲综合精品久久| 美女脱光内衣内裤视频久久网站| 国产一区二三区| 91免费观看在线| 欧美一级高清大全免费观看| 国产片一区二区| 夜夜嗨av一区二区三区| 免费成人小视频| 不卡影院免费观看| 欧美浪妇xxxx高跟鞋交| 国产欧美一区视频| 亚洲精品国久久99热| 强制捆绑调教一区二区| 91一区二区在线观看| 欧美一级日韩一级| 中文字幕一区二区三区色视频| 午夜视频在线观看一区| 国产美女精品一区二区三区| 欧美在线影院一区二区| 久久香蕉国产线看观看99| 一区二区三区四区不卡在线| 国产一区二区三区四区五区入口| 欧美特级限制片免费在线观看| 久久久久99精品国产片| 亚洲高清一区二区三区| 成人精品小蝌蚪| 欧美一级国产精品| 亚洲最大成人综合| 国内国产精品久久| 欧美二区三区的天堂| 亚洲三级小视频| 91麻豆精品国产无毒不卡在线观看 | 欧美高清视频不卡网| 国产精品久久久久久户外露出 | 日韩一区国产二区欧美三区| 中文字幕在线播放不卡一区| 韩国精品免费视频| 欧美精品久久久久久久多人混战 | 国产麻豆精品一区二区| 欧美乱妇一区二区三区不卡视频| 国产精品国产三级国产aⅴ原创 | 成人福利视频在线看| 亚洲精品一区二区三区香蕉| 午夜亚洲福利老司机| 色欧美日韩亚洲| 国产精品成人免费精品自在线观看 | 国产一区二区三区四| 日韩视频免费观看高清在线视频| 一区二区三区在线播放| 成人天堂资源www在线| 国产区在线观看成人精品| 极品瑜伽女神91| 日韩午夜在线观看视频| 日韩电影免费在线看| 欧美日韩精品一区二区| 亚洲va欧美va人人爽| 欧美美女黄视频| 亚洲成人高清在线| 色综合久久久网| 亚洲视频免费观看| av一本久道久久综合久久鬼色| 国产精品免费av| eeuss国产一区二区三区| 中文字幕一区在线观看视频| av在线不卡电影| 亚洲人成7777| 在线观看av一区| 五月天亚洲精品| 在线不卡的av| 美女视频黄久久| 久久丝袜美腿综合| 国产69精品一区二区亚洲孕妇| 国产人久久人人人人爽| voyeur盗摄精品| 一区二区三区美女视频| 欧美视频你懂的| 日韩国产精品大片| 精品理论电影在线观看 | 91丝袜美腿高跟国产极品老师| 亚洲欧洲三级电影| 在线视频一区二区三| 三级欧美韩日大片在线看| 日韩免费在线观看| 国模娜娜一区二区三区| 国产精品美女www爽爽爽| 91久久精品网| 日本麻豆一区二区三区视频| 久久精品欧美一区二区三区不卡| 国产精品18久久久久久久久| 亚洲人成亚洲人成在线观看图片| 欧美日韩精品福利| 美腿丝袜亚洲色图| 国产精品久久久久毛片软件| 欧美日韩国产a| 国产美女精品一区二区三区|