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

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

?? 2440lib.c

?? s3c2440 io_port模塊的代碼。用ADS1.2開發。
?? C
?? 第 1 頁 / 共 2 頁
字號:


//************************[ HCLK, PCLK ]***************************
/*
// for 2410.
void ChangeClockDivider(int hdivn,int pdivn)
{
     // hdivn,pdivn FCLK:HCLK:PCLK
     //     0,0         1:1:1 
     //     0,1         1:1:2 
     //     1,0         1:2:2
     //     1,1         1:2:4
    rCLKDIVN = (hdivn<<1) | pdivn;    

    if(hdivn)
        MMU_SetAsyncBusMode();
    else 
        MMU_SetFastBusMode();
}
*/
// Modified for 2440.
void ChangeClockDivider(int hdivn_val,int pdivn_val)
{
	int hdivn=2, pdivn=0;
	
     // hdivn_val (FCLK:HCLK)ratio hdivn
     // 11           1:1       (0)
     // 12           1:2       (1)
     // 13           1:3       (3) 
     // 14           1:4       (2)
     // pdivn_val (HCLK:PCLK)ratio pdivn
     // 11           1:1       (0)
     // 12           1:2       (1)
	switch(hdivn_val) {
		case 11: hdivn=0; break;
		case 12: hdivn=1; break;
		case 13:
		case 16: hdivn=3; break;
		case 14: 
		case 18: hdivn=2; break;
	}
	
	switch(pdivn_val) {
		case 11: pdivn=0; break;
		case 12: pdivn=1; break;
	}
	
	//Uart_Printf("Clock division change [hdiv:%x, pdiv:%x]\n", hdivn, pdivn);
	rCLKDIVN = (hdivn<<1) | pdivn;
	//Uart_Printf("rCLKDIVN:%x]\n", rCLKDIVN);

	switch(hdivn_val) {
		case 16:		// when 1, HCLK=FCLK/6.
			rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<8); 
		break; 
		case 18: 	// when 1, HCLK=FCLK/8.
			rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9); 
		break;
	}
	//Uart_Printf("rCAMDIVN:%x]\n", rCAMDIVN);
	
    if(hdivn!=0)
        MMU_SetAsyncBusMode();
    else 
        MMU_SetFastBusMode();
}



//**************************[ UPLL ]*******************************
void ChangeUPllValue(int mdiv,int pdiv,int sdiv)
{
    rUPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
}


//*************************[ General Library ]**********************
#if !USE_MAIN
void * malloc(unsigned nbyte) 
//Very simple; Use malloc() & free() like Stack
//void *mallocPt=Image$$RW$$Limit;
{
    void *returnPt = mallocPt;

    mallocPt = (int *)mallocPt+nbyte/4+((nbyte%4)>0); //To align 4byte

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

//-------------------------------------------------------------------
void free(void *pt)
{
    mallocPt = pt;
}
#endif


 void ChangeSromParameter(char bank, char minacc)  // only for Tacc
{
    int acc;

    //1000000/(hclk/1000000.)=Unit Period(ns)*1000
    acc = (int)(minacc*(HCLK/1000000.)/1000+0.5);	

    if(acc<=1)
		acc=0;    	
    else if(acc==2)
	 	acc=1;
    else if(acc==3)
	 	acc=2;
    else if(acc==4)
	 	acc=3;
    else if((5<acc)&&(acc<=6))
   		acc=4;
    else if((7<acc)&&(acc<=8))
	 	acc=5;
    else if((9<acc)&&(acc<=10))
   		acc=6;	
    else if(11<acc)
	 	acc=7;
	
    switch(bank)
    {
	  case 0 : rBANKCON0 |= (acc<<8); break;
	  case 1 : rBANKCON1 |= (acc<<8); break;
	  case 2 : rBANKCON2 |= (acc<<8); break;
	  case 3 : rBANKCON3 |= (acc<<8); break;
	  case 4 : rBANKCON4 |= (acc<<8); break;
	  case 5 : rBANKCON5 |= (acc<<8); break;
    }	
}


// each timing parameter's unit is nano second..
void ChangeSdramParameter(char bank_num, int minrc, int minrcd, int minrp, int refresh, int col_addr, int cl, char banksize)
{
    int rc, rcd, rp, rcnt, scan;

    //1000000/(hclk/1000000.)=Unit Period(ns)*1000
    rc = (int)(minrc*(HCLK/1000000.)/1000+0.5)-4;
    rcd = (int)(minrcd*(HCLK/1000000.)/1000+0.5)-2;
    rp = (int)(minrp*(HCLK/1000000.)/1000+0.5)-2;
	rcnt = (int)(2048+1-(HCLK/1000000.)*(refresh/1000.)+0.5);
	scan = col_addr-8;

	if (rc<0) rc=0; if (rc>3) rc = 3;
	if (rcd<0) rcd=0; if (rcd>2) rcd = 2;
	if (rp<0) rp=0; if (rp>2) rp = 2;
	if (cl==1) cl = 0;	
	switch(banksize)
	{
	case 2 : banksize = 4; break;
	case 4 : banksize = 5; break;
	case 8 : banksize = 6; break;
	case 16 : banksize = 7; break;
	case 32 : banksize = 0; break;
	case 64 : banksize = 1; break;
	default : banksize = 2; break; // 128MB/128MB
	}

//	Uart_Printf("rc=%d, rcd=%d, rp=%d, rcnt=%d, scan=%d, cl=%d, banksize=%d\n", rc, rcd, rp, rcnt, scan, cl, banksize);
	
    switch(bank_num)
    {
    case 0:
    case 6:
	default:
		rBANKCON6 = ( rBANKCON6 & ~((3<<15)|(0xf<<0)) ) | (3<<15)|(rcd<<2)|(scan); // SDRAM, Trcd, column address number
		rMRSRB6 = (rMRSRB6 & ~(3<<4)) | (cl<<4);
	break;
	case 1:
    case 7: // bank 7
		rBANKCON7 = ( rBANKCON7 & ~((3<<15)|(0xf<<0)) ) | (3<<15)|(rcd<<2)|(scan); // SDRAM, Trcd, column address number
		rMRSRB7 = (rMRSRB7 & ~(3<<4)) | (cl<<4);
	break;
    }	
	rREFRESH = (rREFRESH & ~(0x3f<<18)) | (1<<23)|(0<<22)|(rp<<20)|(rc<<18)|(rcnt); // refresh enable, auto refresh, Trp, Trc, Refresh counter
	rBANKSIZE = (rBANKSIZE & ~(7<<0)) | (banksize); // SCLK power save mode, 128/128 bank
	
}

void Max1718_Set(int voltage)
{

     int vtg;
	//////////////////////////////////////////////
	//   D4    D3  D2   D1     D0
	//	0	 1	0 	0	 0		// 1.35V
	//	0	 1	0 	0	 1		// 1.30V
	//	0	 1	0 	1	 0		// 1.25V
	//	0	 1	0 	1	 1		// 1.20V
	//	0	 1	1 	0	 0		// 1.15V
	//	0	 1	1 	0	 1		// 1.10V
	//	0	 1	1 	1	 0		// 1.05V
	//	0	 1	1 	1	 1		// 1.00V
	//	1	 0	0 	0	 1		// 0.95V
	//	1	 0	0 	1	 1		// 0.90V
	//	1	 0	1 	0	 1		// 0.85V
	//	1	 0	1 	1	 1		// 0.80V
	
    vtg=voltage;
	rGPBCON = (rGPBCON&~((3<<20) |(3<<16) |(3<<14))) | (1<<20) | (1<<16) | (1<<14);
	// GPB7, 8, 10 : Output
	rGPFCON=(rGPFCON&~(0xff<<8))|(0x55<<8);  // GPF4~7: Output , shared with LED4~7

     switch (vtg)
	{
	case 135:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
	      rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(0<<5)|(0<<4);	//D3~0
	      break;

	
	case 130:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(0<<5)|(1<<4); //D3~0
		 break;
       
	case 125:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(1<<5)|(0<<4); //D3~0
		break;

	case 120:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
		 break;

	case 115:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(0<<5)|(0<<4); //D3~0
		 break;

	case 110:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(0<<5)|(1<<4); //D3~0
		 break;

	case 105:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(1<<5)|(0<<4); //D3~0
		 break;

	case 100:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(1<<5)|(1<<4); //D3~0
		break;

	case 95:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(0<<6)|(0<<5)|(1<<4); //D3~0
		 break;

	case 90:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
		 break;

	case 85:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
		rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(1<<6)|(0<<5)|(1<<4); //D3~0
		 break;

      	case 80:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
	       rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(1<<6)|(1<<5)|(1<<4); //D3~0
		 break;

       default:	// 1.2V
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
		 break;

		
	}
		 
	rGPBDAT&=~(1<<8);   //Latch enable
	rGPBDAT|=(1<<10);   //Output enable
	rGPBDAT|=(1<<8);	 //Latch disable

}


// Write the argument of the function in hexadecimal to the serial
// port. If you want "0x" in front of it, you'll have to add it
// yourself.
void Uart_SendHex(void *addr, VAR_TYPE type){
	char	c, uHex, lHex, *s;

	// for little endian.
	/////////////for (s=(char *)(addr+(type/8)-1); (U32)s>=(U32)addr; s--){

		c = *s;

		// get upper 4 bit and lower 4 bit.
		uHex = ((c>>4)&0x0f);
		lHex = ((c>>0)&0x0f);

		// upper and lower 4 bit to '0'~'9', 'A'~'F'.
		if (uHex<10) uHex+='0';
		else         uHex+='A'-10;
		if (lHex<10) lHex+='0';
		else         lHex+='A'-10;

		Uart_SendByte(uHex);
		Uart_SendByte(lHex);
	////////////}
}


// Write the argument of the function in decimal to the serial port.
// We just assume that each argument is positive (i.e. unsigned). */
void Uart_SendDec(const U32 d){
	int leading_zero = 1;
	U32 divisor, result, remainder;

	remainder = d;

	for (divisor=1000000000; divisor>0; divisor/=10){
		result = remainder/divisor;
		remainder %= divisor;

		if(result != 0 || divisor == 1) leading_zero = 0;
		if(leading_zero == 0) Uart_SendByte((char)(result) + '0');
	}
}


// Write a block of data to the serial port. Similar to
// SerialOutputString(), but this function just writes the number of
// characters indicated by bufsize and doesn't look at termination
// characters.
void Uart_SendBlock(const char *buf, int bufsize){
	while(bufsize--) Uart_SendByte(*buf++);
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色94色欧美sute亚洲线路一ni| 成人午夜视频福利| 欧美精品高清视频| 狠狠色伊人亚洲综合成人| www精品美女久久久tv| 成人一区在线看| 91久久精品一区二区二区| 日日夜夜精品视频免费| 国产亚洲一区二区三区四区| 91免费版在线| 韩国女主播成人在线观看| 亚洲欧美成aⅴ人在线观看| 日韩一区二区电影在线| 91一区二区在线观看| 国产又黄又大久久| 一区二区三区在线观看动漫| 国产亚洲一区二区在线观看| 91精品国产综合久久久久久| 96av麻豆蜜桃一区二区| 国模套图日韩精品一区二区| 婷婷夜色潮精品综合在线| 一区二区欧美视频| 亚洲色图都市小说| 久久精品日产第一区二区三区高清版| 欧美怡红院视频| 欧美性猛交一区二区三区精品| 粉嫩绯色av一区二区在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 久久福利资源站| 日本中文字幕不卡| 一区二区三区 在线观看视频 | 日本欧洲一区二区| 日韩高清一区在线| 天天av天天翘天天综合网| 亚洲国产中文字幕| 午夜精品久久久久久不卡8050 | 视频一区在线视频| 国产一区在线精品| 欧美性xxxxxxxx| 日韩欧美久久久| 中文字幕精品一区| 午夜久久久久久| 麻豆精品蜜桃视频网站| 久久99精品久久久久久国产越南 | 亚洲va欧美va人人爽| 蜜桃av一区二区在线观看 | 青青青爽久久午夜综合久久午夜| 另类专区欧美蜜桃臀第一页| 国产高清在线精品| 欧美福利一区二区| 亚洲精品成人精品456| 久久精品国产免费| av电影在线观看一区| 日韩一区二区三区在线观看| 亚洲视频在线一区观看| 国产精品99久久久久久似苏梦涵| 欧美sm美女调教| 制服丝袜亚洲精品中文字幕| 亚洲国产精品影院| 日韩一区二区三区免费看 | 1024亚洲合集| 日精品一区二区三区| 国产精品18久久久久久vr| 99麻豆久久久国产精品免费 | 欧美日韩成人在线| 国产欧美日韩不卡免费| 一区二区三区欧美在线观看| 美女网站视频久久| 久久久亚洲精品一区二区三区| 亚洲欧洲在线观看av| 成人伦理片在线| 亚洲色欲色欲www在线观看| 粉嫩av一区二区三区在线播放| 久久精品网站免费观看| 国产美女在线观看一区| 国产精品三级在线观看| 成人午夜激情影院| 亚洲免费看黄网站| 播五月开心婷婷综合| 亚洲免费av在线| 欧美日韩国产高清一区二区三区| 日韩中文欧美在线| 国产日本亚洲高清| 国产aⅴ综合色| 一区二区三区在线视频免费| 91超碰这里只有精品国产| 国产成人在线网站| 黄色日韩三级电影| 日本不卡中文字幕| 色偷偷久久一区二区三区| 久久久久久免费| 欧美一级二级三级蜜桃| 午夜视频在线观看一区二区 | eeuss国产一区二区三区| 亚洲二区视频在线| 一区二区三区.www| 亚洲国产一二三| 亚洲v中文字幕| 免费看欧美女人艹b| 亚洲一区影音先锋| 欧美日韩视频一区二区| 蜜桃一区二区三区四区| 日韩一二三区视频| 精品一区二区三区免费| 欧美猛男超大videosgay| 日韩精品1区2区3区| 91尤物视频在线观看| 洋洋成人永久网站入口| 欧美在线999| 欧美aaaaa成人免费观看视频| 中文字幕欧美三区| 欧美一区二区精品久久911| 欧美成人一级视频| 日韩精品一区二区三区四区| 国产精品88av| 精品一区二区综合| 日韩高清不卡一区二区| 亚洲一二三区在线观看| 欧美一a一片一级一片| 免费一级欧美片在线观看| 日韩欧美国产电影| 欧美精选一区二区| 6080国产精品一区二区| 国产在线精品不卡| 国产精品系列在线观看| 天天av天天翘天天综合网| 亚洲综合一二区| 亚洲日本电影在线| 日韩欧美另类在线| 久久伊人蜜桃av一区二区| 亚洲国产成人高清精品| 色综合色狠狠综合色| 久久久精品中文字幕麻豆发布| 日韩高清国产一区在线| 欧美无乱码久久久免费午夜一区| 亚洲人xxxx| 色综合久久66| 成人一区二区三区视频在线观看 | 亚洲va天堂va国产va久| 成人h版在线观看| 色欧美乱欧美15图片| 日本韩国精品在线| 一道本成人在线| 成人va在线观看| 成人精品一区二区三区四区| 91色乱码一区二区三区| 懂色av噜噜一区二区三区av| 美国十次综合导航| 波多野结衣视频一区| 久久久精品影视| 三级不卡在线观看| 欧美性猛片aaaaaaa做受| 久久精品亚洲精品国产欧美| 精品一区二区成人精品| 欧美日韩国产色站一区二区三区| 亚洲国产精品t66y| 成人免费视频免费观看| 中文字幕国产一区二区| 国产成人自拍高清视频在线免费播放| 日韩精品中文字幕一区二区三区 | 精品粉嫩aⅴ一区二区三区四区| 亚洲亚洲人成综合网络| 欧美日韩国产另类一区| 香蕉久久一区二区不卡无毒影院| 欧美三级电影在线观看| 首页国产欧美日韩丝袜| 日韩欧美一区在线| 丝袜诱惑亚洲看片| 成人sese在线| 91久久精品一区二区| 日韩一区二区在线免费观看| 亚洲女人的天堂| 天堂蜜桃一区二区三区| 欧美日韩一区二区在线视频| 亚洲激情av在线| a亚洲天堂av| 日本亚洲三级在线| 久久久久高清精品| 99re成人在线| 亚洲欧洲精品一区二区三区不卡| 国产在线精品一区在线观看麻豆| 国产精品毛片a∨一区二区三区| 日韩精品影音先锋| 亚洲欧美精品午睡沙发| 玖玖九九国产精品| 欧美综合一区二区三区| 国产精品美女久久福利网站| 久久99精品一区二区三区三区| 欧洲视频一区二区| 国产精品萝li| 国产在线观看免费一区| 91精品国产综合久久香蕉的特点 | 成人黄色国产精品网站大全在线免费观看 | 欧美日韩一区二区三区免费看| 风间由美性色一区二区三区| 欧美日韩国产中文| 99久久综合色| 精品久久久久久久人人人人传媒 | 国产欧美日韩精品一区| 久久99国产精品尤物|