亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲一区二区三区中文字幕| 久久一夜天堂av一区二区三区| 激情成人综合网| 亚洲成人资源网| 五月天激情综合| 图片区日韩欧美亚洲| 亚洲午夜三级在线| 亚洲国产一区二区三区青草影视| 亚洲综合一区二区三区| 亚洲一区二区视频在线观看| 亚洲精品国产视频| 亚洲成人www| 日韩经典中文字幕一区| 日本人妖一区二区| 蜜桃av一区二区三区| 国产在线视频一区二区| 国产aⅴ综合色| 99久久伊人网影院| 在线观看日韩精品| 7777精品伊人久久久大香线蕉完整版 | 日韩黄色小视频| 亚洲成在线观看| 精品一区二区在线视频| 国产成人无遮挡在线视频| 成人丝袜18视频在线观看| 99re在线视频这里只有精品| 在线观看一区日韩| 日韩欧美国产一区在线观看| 2023国产精品自拍| 亚洲天天做日日做天天谢日日欢| 亚洲日本韩国一区| 日韩av电影免费观看高清完整版 | 99久久国产综合精品女不卡| 在线观看视频一区| 精品乱码亚洲一区二区不卡| 国产精品国产三级国产aⅴ原创 | 国产成人aaa| 色综合久久中文综合久久97| 8x福利精品第一导航| 精品国产sm最大网站免费看| 久久久久久免费网| 亚洲综合色婷婷| 国产一区二区三区蝌蚪| 在线精品亚洲一区二区不卡| 久久午夜电影网| 亚洲成人午夜电影| 不卡一二三区首页| 欧美成人官网二区| 亚洲成人资源在线| 中文字幕日韩欧美一区二区三区| 蜜桃视频在线观看一区二区| 欧美不卡一区二区| 精品一区二区免费在线观看| 丰满亚洲少妇av| 在线观看视频一区二区欧美日韩| 欧美精品一区二区三区蜜桃 | 欧美精品777| 综合久久国产九一剧情麻豆| 国产伦精一区二区三区| 欧美在线影院一区二区| 亚洲国产成人在线| 久久er精品视频| 在线成人av网站| 亚洲综合视频网| 色吊一区二区三区 | 波多野结衣中文字幕一区二区三区 | 成人免费看的视频| 久久网这里都是精品| 久久精品噜噜噜成人av农村| 欧美性受xxxx| 亚洲欧美一区二区久久| 成人a级免费电影| 国产日产亚洲精品系列| 全国精品久久少妇| 欧美精品xxxxbbbb| 午夜精品福利视频网站| 欧美在线视频全部完| 亚洲裸体在线观看| 色先锋久久av资源部| 中文字幕一区二区三区四区不卡 | 国产精品国产精品国产专区不蜜 | 不卡一卡二卡三乱码免费网站| 久久久久久久综合狠狠综合| 久久av中文字幕片| 久久蜜臀中文字幕| 国产不卡高清在线观看视频| 精品国产乱码久久久久久蜜臀| 日韩国产在线观看一区| 91精品国产入口| 久热成人在线视频| 久久婷婷色综合| 国产高清不卡二三区| 国产女人18水真多18精品一级做| 国产久卡久卡久卡久卡视频精品| 久久综合色8888| 成人美女在线观看| 最新欧美精品一区二区三区| 色老汉av一区二区三区| 午夜精彩视频在线观看不卡| 日韩一区二区三区观看| 国产在线观看一区二区| 国产精品国产三级国产aⅴ原创 | 精品久久久久一区二区国产| 久久99最新地址| 国产精品福利影院| 欧美亚一区二区| 精品一区在线看| 亚洲天堂2016| 欧美一区二区女人| 国产成人av电影在线| 亚洲综合偷拍欧美一区色| 日韩一区二区视频在线观看| 国产麻豆9l精品三级站| 亚洲自拍欧美精品| 日韩免费观看2025年上映的电影| 国产.欧美.日韩| 夜夜嗨av一区二区三区四季av| 欧美精品在线视频| 国产成人精品www牛牛影视| 亚洲在线免费播放| 久久亚洲一级片| 91美女片黄在线观看91美女| 麻豆91免费看| 亚洲一区在线观看免费| 久久先锋影音av| 欧美日韩一区二区在线观看视频| 久久99久久精品欧美| 亚洲精品日韩专区silk| 中文字幕欧美日本乱码一线二线| 欧美日韩精品一区二区三区蜜桃 | 欧美一级欧美三级在线观看| 成人免费黄色大片| 韩国欧美一区二区| 丝袜美腿亚洲一区二区图片| 亚洲人成精品久久久久| 欧美精品一区二区久久婷婷| 欧美亚洲国产bt| 色综合久久久久综合99| 国产精品996| 人人超碰91尤物精品国产| 亚洲欧美日韩小说| 国产精品色呦呦| 国产色91在线| 久久先锋资源网| 欧美电影精品一区二区| 在线播放国产精品二区一二区四区| 91同城在线观看| 国产成人av电影在线播放| 国产一区视频在线看| 久久99精品一区二区三区三区| 亚洲大尺度视频在线观看| 亚洲国产一区在线观看| 一区二区在线观看不卡| 亚洲免费观看高清完整版在线观看| 久久久91精品国产一区二区精品| 精品国产乱码久久久久久老虎| 777午夜精品视频在线播放| 欧美美女喷水视频| 欧美二区三区的天堂| 欧美久久一区二区| 91精品国产91久久久久久最新毛片| 在线观看日韩一区| 欧美肥妇bbw| 日韩免费电影网站| 欧美成人三级在线| 久久久精品免费观看| 国产欧美日韩亚州综合| 国产精品久久久久一区| 亚洲人精品一区| 亚洲国产一区在线观看| 蜜臀av在线播放一区二区三区 | 一区精品在线播放| 亚洲天堂网中文字| 亚洲福中文字幕伊人影院| 日韩和的一区二区| 国产久卡久卡久卡久卡视频精品| 国产一区二区不卡| 91香蕉视频mp4| 欧美日韩国产综合一区二区三区| 欧美日韩视频第一区| 精品99999| 亚洲欧美激情小说另类| 日日欢夜夜爽一区| 韩国精品一区二区| 色就色 综合激情| 欧美变态口味重另类| 日本一区二区视频在线| 一区二区久久久久久| 视频一区二区中文字幕| 国产激情一区二区三区桃花岛亚洲| 99久久伊人网影院| 在线不卡a资源高清| 中文字幕欧美激情一区| 日韩精品三区四区| 成人激情图片网| 日韩欧美中文字幕精品| 亚洲国产精品激情在线观看| 香蕉加勒比综合久久| 国产不卡视频在线观看| 91精品国产综合久久精品麻豆 |