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

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

?? 44blib.c

?? 此例程是基于ARMS3C44B0的經典例程 對于嵌入式開發而言很有用 需要硬件平臺
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*********************************************************************************************
* File:		44blib.c
* Author:	embest
* Desc:		s3c44b0 function library 
* History:	
*********************************************************************************************/
#include <stdarg.h>
#include "44b.h"
#include "44blib.h"
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include<stdio.h>
/*------------------------------------------------------------------------------------------*/
/*	 								constant define						 				    */
/*------------------------------------------------------------------------------------------*/
void (*run)(void) = (void (*)(void))0x0;
void uhal_init_interrupts(void)	;
/*------------------------------------------------------------------------------------------*/
/*	 								global variable						 				    */
/*------------------------------------------------------------------------------------------*/
static int f_nDelayLoopCount = 400;
static int f_nWhichUart = 0;
int f_nDownloadAddr = 0x0C000000;

					//----------------------------------------------------------//
					//							SYSTEM							//
					//----------------------------------------------------------//
					
/*********************************************************************************************
* 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)
{
	int nAdjust;
	int i;

	nAdjust = 0;

	if(nTime == 0)
	{
		nTime = 200;
		nAdjust = 1;
		f_nDelayLoopCount = 400;
		rWTCON = ((MCLK/1000000-1)<<8)|(2<<3);			// 1M/64, Watch-dog, nRESET, interrupt disable
		rWTDAT = 0xffff;
		rWTCNT = 0xffff;	 
		rWTCON = ((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); 	// 1M/64, Watch-dog enable, nRESET, interrupt disable
	}

	for(; nTime>0; nTime--)
	{
		for(i=0; i<f_nDelayLoopCount; i++)
			;
	}

	if(nAdjust==1)
	{
		rWTCON = ((MCLK/1000000-1)<<8)|(2<<3);
		i = 0xffff-rWTCNT;   							// 1count/16us?????????
		f_nDelayLoopCount = 8000000/(i*64);				// 400*100/(i*64/200)
	}
}


					//----------------------------------------------------------//
					//							PORTS							//
					//----------------------------------------------------------//
					
/*********************************************************************************************
* name:		port_init
* func:		initialize io port for Embest teach kit ii
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void port_init(void)
{
	// CAUTION:Follow the configuration order for setting the ports. 
	// 1) setting value 
	// 2) setting control register 
	// 3) configure pull-up resistor.  

	//16bit data bus configuration  

	// PORT A GROUP
	// 	9	8	7	6	5	4	3	2	1	0
	// 	A24	A23	A22	A21	A20	A19	A18	A17	A16	A0
	//	0	1	1	1	1	1	1	1	1	1
	rPCONA = 0x1ff;	

	// PORT B GROUP
	// 	10		9		8		7		6		5		4		3		2		1		0
	//	/CS5	/CS4	/CS3	/CS2	/CS1	GPB5	GPB4	/SRAS	/SCAS	SCLK	SCKE
	//	EXT		NIC		USB		IDE		SMC		NC		NC		Sdram	Sdram	Sdram	Sdram
	//	?		?		?		?		?		Out		Out		?		?		?		?
	//  1 		1   	1   	1    	1    	0       0     	1    	1    	1   	1	
	rPCONB = 0x1cf;
	rPDATB = 0x7ff&~(1<<10);				
    
	// PORT C GROUP, BUSWIDTH=16
	//  15		14		13		12		11		10		9		8		7		6		5		4		3		2		1		0
	//	NC		NC		Uart1	Uart1	NC		NC		NC		NC		NC		NC		NC		NC		out		out		out		out
	//	?		?		?		?		?		?		?		?		?		?		?		?		*		*		*		*																													*						
	//	00		00		11		11		00		00		01		01		00		00		00		00		01		01		01		01
	rPDATC = 0xfc00;
	rPCONC = 0x0FF5FF55;	
//	rPCONC = 0x0ff0ff55;	// EduKit-II
//	rPCONC = 0x0ff0ffff;	// S3CEV40
	rPUPC  = 0x30ff;										// PULL UP RESISTOR should be enabled to I/O

	// PORT D GROUP
	// 	BIT7	6		5		4		3		2		1		0
	//	VF		OUT		VLINE	VCLK	VD3		VD2		VD1		VD0
	//	10		01		10		10		10		10		10		10
	rPDATD = 0xbf;
	rPCOND = 0x9aaa;	
	rPUPD  = 0x0;
	// These pins must be set only after CPU's internal LCD controller is enable
	
	// PORT E GROUP 
	// 	8		7		6		5		4		3			2		1		0
	// 	CODECLK	Out		Out		Out		TOUT1	Out(Beep)	RXD0	TXD0	?
	//  *		*		*		*				*			*		*
	// 	10		01		01		01		10		01			10		10		00
	rPDATE = 0x1ff;
	rPCONE = 0x25668;	
	rPUPE  = 0x6;
	
	// PORT F GROUP
	// 	8		7		6		5		 4		3		2		1		0
	// 	IISCLK	IISDI	IISDO	IISLRCK	Out		Out		Input	IICSDA	IICSCL
	//	*		*		*		*		*		*		*		*		*
	// 	100		100		100		100		01		01		00		10		10
	rPDATF = 0xe7;
	rPCONF = 0x24914A;										// PF3:LED4 PF4:LED3 PF2:nWait
//	rPCONF = 0x252A; //S3CEV40
	rPUPF  = 0x0;

	// PORT G GROUP
	// 	7		6		5		4		3		2		1		0
	// 	INT7	INT6	INT5	INT4	INT3	INT2	INT1	INT0
	//	S3		S4		S5		S6		NIC				IDE		USB
	//											*
	//	11      11      11      11      11      11      11      11
	rPDATG = 0xff;
	rPCONG = 0xffff;
	rPUPG  = 0x0;											// should be enabled  
	rSPUCR = 0x7;  											// D15-D0 pull-up disable

	// Non Cache area
	//rNCACHBE0 = ((NON_CACHE_END>>12)<<16) | (NON_CACHE_START>>12); 
	rNCACHBE0 = 0xc0002000;
	// Low level default
	rEXTINT = 0x0;
}

void beep(int BeepStatus)
{
	if (BeepStatus==0)
		rPDATE=rPDATE|0x8;
	else
		rPDATE=rPDATE&0x1f7;

}

					//----------------------------------------------------------//
					//							UART							//
					//----------------------------------------------------------//
					
/*********************************************************************************************
* name:		uart_init
* func:		initialize uart channel
* para:		nMainClk	-- 	input, 
*							nBaud, 
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void uart_init(int nMainClk, int nBaud)
{
    int i;

    if(nMainClk==0)
		nMainClk=MCLK;

    rUFCON0=0x0;     								//FIFO disable
    rUFCON1=0x0;
    rUMCON0=0x0;
    rUMCON1=0x0;

	//UART0
    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)(nMainClk/16./nBaud + 0.5) -1);

	//UART1
    rULCON1  = 0x3;
    rUCON1   = 0x245;
    rUBRDIV1 = ((int)(nMainClk/16./nBaud + 0.5) -1);

    for(i=0; i<100; i++) 
    	;
}

/*********************************************************************************************
* name:		uart_change_baud
* func:		Change uart baud rate
* para:		nChannel	-- 	input, UART0 or UART1
*			nBaud		--	input, baud rate
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void uart_change_baud(int nChannel, int nBaud)
{
    if (nChannel == UART0)
	    rUBRDIV0=( (int)(MCLK/16./nBaud + 0.5) -1 );
    
    if (nChannel == UART1)
	    rUBRDIV1=( (int)(MCLK/16./nBaud + 0.5) -1 );
}

/*********************************************************************************************
* name:		uart_select
* func:		change uart channel
* para:		nChannel	-- 	input, UART0 or UART1
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void uart_select(int nChannel)
{
    f_nWhichUart=nChannel;
}

/*********************************************************************************************
* name:		uart_txempty
* func:		Empty uart channel
* para:		nChannel	-- 	input, UART0 or UART1
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void uart_txempty(int nChannel)
{
    if(nChannel == 0)
		while(!(rUTRSTAT0 & 0x4)); 						// wait until tx shifter is empty.
    else
    	while(!(rUTRSTAT1 & 0x4)); 						// wait until tx shifter is empty.
}

/*********************************************************************************************
* name:		uart_getch
* func:		Get a character from the uart
* para:		none
* ret:		get a char from uart channel
* modify:
* comment:		
*********************************************************************************************/
char uart_getch(void)
{
    if(f_nWhichUart==0)
    {	    
		while(!(rUTRSTAT0 & 0x1)); 						// Receive data read
		return RdURXH0();
    }
    else
    {
		while(!(rUTRSTAT1 & 0x1)); 						// Receive data ready
		return	rURXH1;
    }
}

/*********************************************************************************************
* name:		uart_getkey
* func:		Get a character from the uart
* para:		none
* ret:		get a char from uart channel
* modify:
* comment:		
*********************************************************************************************/
char uart_getkey(void)
{
    if(f_nWhichUart==0)
    {	    
		if(rUTRSTAT0 & 0x1)    //Receive data ready
    	    return RdURXH0();
		else
		    return 0;
    }
    else
    {
		if(rUTRSTAT1 & 0x1)    //Receive data ready
		    return rURXH1;
		else
		    return 0;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线视频播放| 日本一区二区在线不卡| 99免费精品视频| 懂色av一区二区三区蜜臀| 精品一区二区免费| 精品影视av免费| 国产精品99久久久久久有的能看 | 欧美三级韩国三级日本一级| 91亚洲国产成人精品一区二三| 久久久青草青青国产亚洲免观| 国产凹凸在线观看一区二区| 久久综合久久久久88| 久久久久久一二三区| 中文字幕免费不卡| 三级欧美在线一区| 国内外成人在线视频| a美女胸又www黄视频久久| 日本乱码高清不卡字幕| 7777精品伊人久久久大香线蕉完整版| 国产精品夜夜嗨| 91一区在线观看| 日韩欧美久久一区| 亚洲综合999| 欧美zozozo| 国产香蕉久久精品综合网| 2021久久国产精品不只是精品| 日本一区二区三级电影在线观看 | 精品国产三级a在线观看| 久久日韩精品一区二区五区| 中文字幕在线播放不卡一区| 亚洲韩国一区二区三区| 久久精品国产亚洲高清剧情介绍 | 国产精品不卡一区二区三区| 亚洲一区二区三区中文字幕| 日本va欧美va瓶| 成人午夜激情影院| 欧美二区乱c少妇| 国产嫩草影院久久久久| 丝袜美腿亚洲色图| 不卡的av在线| 欧美刺激午夜性久久久久久久| 中文字幕一区av| 狠狠色丁香婷综合久久| 欧美三级日韩在线| 欧美激情综合五月色丁香| 日日摸夜夜添夜夜添国产精品| 国产一区二区精品久久91| 欧美日韩亚洲综合一区二区三区| 国产欧美综合色| 另类欧美日韩国产在线| 欧美日韩一本到| 亚洲精品网站在线观看| 国产成人精品在线看| 日韩视频123| 亚洲综合精品久久| jlzzjlzz欧美大全| 国产色一区二区| 精品一区二区日韩| 欧美一区2区视频在线观看| 亚洲美女免费在线| 99热在这里有精品免费| 亚洲精品一区在线观看| 日本不卡在线视频| 欧美丰满嫩嫩电影| 亚洲国产aⅴ天堂久久| 91在线高清观看| 国产精品久久影院| 国产白丝网站精品污在线入口| 精品国产乱码久久久久久蜜臀| 午夜精品视频在线观看| 欧美体内she精高潮| 伊人婷婷欧美激情| 欧美午夜影院一区| 一区二区三区视频在线看| 99精品欧美一区二区三区小说| 国产精品妹子av| 91亚洲午夜精品久久久久久| 国产精品久久久久久亚洲伦 | 精品免费日韩av| 免费看欧美女人艹b| 日韩欧美一级特黄在线播放| 奇米在线7777在线精品| 精品三级在线看| 国产成人综合在线观看| 国产精品福利在线播放| 91免费版在线| 亚洲国产你懂的| 91精品国产全国免费观看| 精一区二区三区| 国产精品三级av| 欧美性猛片aaaaaaa做受| 婷婷国产在线综合| 久久先锋影音av鲁色资源网| 国产白丝精品91爽爽久久| 中文字幕一区二区三区不卡| 欧美午夜精品久久久久久超碰| 日韩av中文字幕一区二区三区| 精品理论电影在线观看| 本田岬高潮一区二区三区| 亚洲综合偷拍欧美一区色| 制服.丝袜.亚洲.中文.综合| 国产美女视频一区| 亚洲日本青草视频在线怡红院| 91福利视频久久久久| 香蕉久久夜色精品国产使用方法 | 一本大道久久精品懂色aⅴ| 亚洲综合视频在线| 欧美大度的电影原声| 丁香激情综合国产| 天天综合网天天综合色| 久久精品一区四区| 欧美日韩另类国产亚洲欧美一级| 精品影院一区二区久久久| 亚洲免费毛片网站| 精品乱人伦小说| 欧美探花视频资源| 国产91精品精华液一区二区三区| 亚洲自拍偷拍网站| 久久久久97国产精华液好用吗| 在线亚洲一区二区| 国产成人在线视频网站| 日韩综合小视频| 亚洲黄色免费网站| 国产欧美日韩另类一区| 欧美精品在欧美一区二区少妇| 成人午夜大片免费观看| 免费成人你懂的| 亚洲成人动漫精品| 伊人开心综合网| 国产拍欧美日韩视频二区| 欧美一区二区在线不卡| 91日韩精品一区| 成人综合婷婷国产精品久久| 麻豆国产欧美日韩综合精品二区| 一区二区三区中文字幕电影| 国产日韩成人精品| 日韩精品一区二区三区swag | 国产在线视频精品一区| 天天av天天翘天天综合网| 樱花影视一区二区| 日韩伦理电影网| 国产精品理论片| 久久精品人人爽人人爽| 精品国产伦一区二区三区观看方式| 欧美日韩大陆一区二区| 欧洲av一区二区嗯嗯嗯啊| 91污在线观看| 91免费看`日韩一区二区| 99久久婷婷国产| 91在线视频网址| 91色乱码一区二区三区| 一本色道久久综合狠狠躁的推荐| 丰满岳乱妇一区二区三区| 国产ts人妖一区二区| 粉嫩高潮美女一区二区三区 | 午夜精品影院在线观看| 亚洲成人免费看| 日韩福利电影在线观看| 丝袜美腿高跟呻吟高潮一区| 青青国产91久久久久久| 卡一卡二国产精品 | 亚洲高清在线视频| 亚洲国产成人av网| 日韩电影免费在线观看网站| 美女在线视频一区| 国产精品伊人色| 成人综合在线视频| 一本到高清视频免费精品| 91成人看片片| 91精品国产综合久久久久久久久久| 欧美一区二区三区四区视频| 久久亚洲精华国产精华液 | 26uuu色噜噜精品一区二区| 久久久国产精华| 亚洲欧洲精品成人久久奇米网| 亚洲精品日日夜夜| 青草国产精品久久久久久| 国产一区二区精品久久99| 91亚洲男人天堂| 欧美一区二区性放荡片| 国产精品天天看| 五月综合激情日本mⅴ| 国产精品99久久久久久似苏梦涵| 91在线观看一区二区| 欧美精品在线一区二区| 国产欧美精品一区二区色综合朱莉| 日韩美女视频一区二区| 日韩不卡手机在线v区| 91玉足脚交白嫩脚丫在线播放| 日韩欧美专区在线| 国产精品乱码一区二三区小蝌蚪| 亚洲va国产天堂va久久en| 国产成人在线色| 91精品婷婷国产综合久久性色| 国产免费成人在线视频| 免费看日韩a级影片| 在线看国产一区| 中文字幕一区二区三区乱码在线| 免费黄网站欧美| 欧美日韩免费观看一区二区三区|