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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? gpio.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	ULONG				Read_Data;
	ULONG				Port;
	DWORD				PA;
	DWORD				Timeout;
	DWORD				Flag;
	DWORD				errorcode = ERROR_SUCCESS;
	DWORD				dwGpioNum;
	DWORD				dwPortNum;

	if (pBufIn){
		dwGpioNum = pPort -> dwBlock;
		dwPortNum = pPort -> dwPort;
    }
	Port = 0x00000001 << (pOpen -> dwPort);
	PA = pOpen -> dwPort;
	Flag = pOpen -> dwFlag;

	switch(dwCode){
		case IOCTL_GPIO_SET_PORT :	
			pOpen -> dwPort = dwPortNum;

			if( (pOpen -> dwPort) > 31 ){
				errorcode = GPIO_PORT_ERROR;
				break;
			}
			Port = 0x00000001 << (pOpen -> dwPort);
			PA = pOpen -> dwPort;
			pOpen -> dwFlag = 1;
			Flag = pOpen -> dwFlag;
			break;

		case IOCTL_GPIO_SET_LOCK :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if( dwPortNum == GPIO_PORT_LOCK ){
				pGpio->dwLock[dwGpioNum] = pGpio->dwLock[dwGpioNum] | Port;
			}else{
				pGpio->dwLock[dwGpioNum] = pGpio->dwLock[dwGpioNum] &
 								~(Port & ~pGpio->Lock[dwGpioNum]);
			}
			break;

		case IOCTL_GPIO_SET_POSNEG :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			if( dwPortNum == GPIO_POSNEG_NEGATIVE ){
				WRITE_REGISTER_ULONG(pGpio -> POSNEG[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> POSNEG[dwGpioNum]) | Port);
			}else{
				WRITE_REGISTER_ULONG(pGpio -> POSNEG[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> POSNEG[dwGpioNum]) & ~Port);
			}
			break;

		case IOCTL_GPIO_SET_EDGLEVEL :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			if( dwPortNum == GPIO_EDGLEV_EDGE ){
				WRITE_REGISTER_ULONG(pGpio -> EDGLEVEL[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> EDGLEVEL[dwGpioNum]) | Port);
			}else{
				WRITE_REGISTER_ULONG(pGpio -> EDGLEVEL[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> EDGLEVEL[dwGpioNum]) & ~Port);
			}
			break;

		case IOCTL_GPIO_SET_FILTER :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			if( dwPortNum == GPIO_FILONOFF_ON ){
				WRITE_REGISTER_ULONG(pGpio -> FILONOFF[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> FILONOFF[dwGpioNum]) | Port);	
			}else{
				WRITE_REGISTER_ULONG(pGpio -> FILONOFF[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> FILONOFF[dwGpioNum]) & ~Port);
			}
			break;

		case IOCTL_GPIO_SET_IOINT :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			if( dwPortNum == GPIO_IOINT_INTERRUPT){
				WRITE_REGISTER_ULONG(pGpio -> IOINTSEL[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> IOINTSEL[dwGpioNum]) | Port);	
				//If interrupt mode is selected,create event object.
				if( hEvent[dwGpioNum][PA] == NULL ){
					hEvent[dwGpioNum][PA] = CreateEvent(NULL,FALSE,FALSE,NULL);
				}
			}else{
				WRITE_REGISTER_ULONG(pGpio -> IOINTSEL[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> IOINTSEL[dwGpioNum]) & ~Port);
				//If event object is created,release event object.
				if( hEvent[dwGpioNum][PA] != NULL ){
					CloseHandle ( hEvent[dwGpioNum][PA] );		
					hEvent[dwGpioNum][PA] = NULL;
				}
			}
			break;

		case IOCTL_GPIO_SET_INTMSK :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			WRITE_REGISTER_ULONG(pGpio -> INTMSK[dwGpioNum], 
				READ_REGISTER_ULONG(pGpio -> INTMSK[dwGpioNum]) & ~Port);

			break;

		case IOCTL_GPIO_SET_INTCLR :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			WRITE_REGISTER_ULONG(pGpio -> INTCLR[dwGpioNum], 
				READ_REGISTER_ULONG(pGpio -> INTCLR[dwGpioNum]) | Port);

			break;

		case IOCTL_GPIO_SET_MSKCLR :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			WRITE_REGISTER_ULONG(pGpio -> MSKCLR[dwGpioNum], 
				READ_REGISTER_ULONG(pGpio -> MSKCLR[dwGpioNum]) | Port);

			break;

		case IOCTL_GPIO_SET_INOUT :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			if( dwPortNum == GPIO_INOUT_OUT){
				WRITE_REGISTER_ULONG(pGpio -> INOUTSEL[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> INOUTSEL[dwGpioNum]) | Port);
			}else{
				WRITE_REGISTER_ULONG(pGpio -> INOUTSEL[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> INOUTSEL[dwGpioNum]) & ~Port);
			}

			break;

		case IOCTL_GPIO_WRITE_PORT :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			if( dwPortNum == GPIO_OUT_HIGH ){
				WRITE_REGISTER_ULONG(pGpio -> OUTDT[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> OUTDT[dwGpioNum]) | Port);
			}else{
				WRITE_REGISTER_ULONG(pGpio -> OUTDT[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> OUTDT[dwGpioNum]) & ~Port);
			}

			break;

		case IOCTL_GPIO_READ_PORT :
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			Read_Data = READ_REGISTER_ULONG(pGpio -> INDT[dwGpioNum]) & Port;

			if((Read_Data) != 0){
				*((DWORD *)pBufOut) = 1;
			}else{
				*((DWORD *)pBufOut) = 0;
			}

			break;

		case IOCTL_GPIO_GET_EVENT:
			if((Flag != 1) | (PA > 31)){
				errorcode = GPIO_PORT_ERROR;
				break;
			}

			if((Port & pGpio->dwLock[dwGpioNum]) == Port){
				errorcode = GPIO_PORT_LOCKED;
				break;
			}

			Timeout = dwPortNum;
			
			RETAILMSG( 1, (TEXT("GPIO driver :Wait Event[%d]-[%d].\r\n"),dwGpioNum,PA));

			dwRet = WaitForSingleObject(hEvent[dwGpioNum][PA],Timeout);

			if( (READ_REGISTER_ULONG(pGpio -> EDGLEVEL[dwGpioNum]) & PA) != 0){
				WRITE_REGISTER_ULONG(pGpio -> INTCLR[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> INTCLR[dwGpioNum]) | PA);

				WRITE_REGISTER_ULONG(pGpio -> MSKCLR[dwGpioNum], 
					READ_REGISTER_ULONG(pGpio -> MSKCLR[dwGpioNum]) | PA);
			}

			*((DWORD *)pBufOut) = dwRet;

			break;

		default :
			errorcode = ERROR_INVALID_PARAMETER;
			break;
	}

	if( errorcode == ERROR_SUCCESS ){
		return TRUE;
	}else{
		SetLastError( errorcode );
		return FALSE;
	}
}


VOID
EventHandler(
    PGPIO_DRIVER_INFO		pGpio
                )
{
	HANDLE	hEvntInt;
	ULONG	IntType[4];
	int		i;
	DWORD	dwBlockNum;	

	hEvntInt = CreateEvent(NULL,FALSE,FALSE,NULL);
	if ( hEvntInt == NULL ){
		DEBUGMSG( ZONE_ERROR, (TEXT("GPIO driver :Failed to get event handler.\r\n")));
		CloseHandle ( hEvntInt );
	}

	if ( !InterruptInitialize( SYSINTR_GPIO, hEvntInt, NULL, 0 ) ){
		DEBUGMSG( ZONE_ERROR, (TEXT("GPIO driver :Failed to bind event handler.\r\n")));
		CloseHandle ( hEvntInt );
	}

	SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_HIGHEST );

	while (1){

		if( WaitForSingleObject( hEvntInt, INFINITE ) == WAIT_OBJECT_0)
		{

		for ( dwBlockNum = 0; dwBlockNum < 4; dwBlockNum++){
			IntType[dwBlockNum] = READ_REGISTER_ULONG(pGpio -> INTDT[dwBlockNum]);
		}

		for ( dwBlockNum = 0; dwBlockNum < 4; dwBlockNum++){
		for( i=0; i<32; i++ ){
				if( ((IntType[dwBlockNum] & (0x00000001<<i)) != 0) && (hEvent[dwBlockNum][i] != NULL) ){
					SetEvent(hEvent[dwBlockNum][i]);
					WRITE_REGISTER_ULONG(pGpio -> INTMSK[dwBlockNum], 
					READ_REGISTER_ULONG(pGpio -> INTMSK[dwBlockNum]) & ~(0x00000001<<i));
				}
			}
		}

		InterruptDone(SYSINTR_GPIO);
  		}
	}

	return ;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久一区二区三区| 亚洲高清免费观看| 97久久精品人人做人人爽| 亚洲天堂久久久久久久| 色88888久久久久久影院按摩| 伊人夜夜躁av伊人久久| 欧美色区777第一页| 男男成人高潮片免费网站| 精品国一区二区三区| 国产91精品在线观看| 亚洲欧美日韩国产手机在线| 欧美专区日韩专区| 欧美a级一区二区| 久久久精品免费免费| 99久久伊人网影院| 亚洲风情在线资源站| 欧美成人aa大片| 成人国产视频在线观看| 亚洲国产精品久久艾草纯爱| 欧美成人乱码一区二区三区| 成人精品国产一区二区4080| 亚洲图片欧美色图| 精品三级在线观看| 99re视频精品| 日本一区中文字幕| 欧美经典一区二区| 欧美影院一区二区三区| 日本aⅴ亚洲精品中文乱码| 久久精品一区二区三区不卡| 色视频欧美一区二区三区| 免费在线看成人av| 成人免费在线播放视频| 欧美影院午夜播放| 国产一区二区三区日韩| 亚洲码国产岛国毛片在线| 欧美一区二区性放荡片| 99精品国产99久久久久久白柏| 首页国产欧美久久| 国产精品欧美一区喷水| 91精品久久久久久久99蜜桃| 福利电影一区二区| 婷婷丁香激情综合| 国产精品国产精品国产专区不蜜 | 欧美丰满一区二区免费视频| 国产在线不卡一卡二卡三卡四卡| 一区二区三区国产| www国产成人| 欧美日韩成人一区| jizzjizzjizz欧美| 另类小说视频一区二区| 亚洲精品视频自拍| 久久蜜桃香蕉精品一区二区三区| 在线中文字幕一区二区| 国产91丝袜在线播放0| 天天av天天翘天天综合网 | 精品一区二区av| 亚洲免费观看视频| 久久久综合精品| 51精品国自产在线| 99re成人精品视频| 精品精品国产高清a毛片牛牛| 91蜜桃婷婷狠狠久久综合9色| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲精品中文字幕在线观看| 国产日韩欧美精品电影三级在线| 欧美一二三在线| 欧美日韩一区二区三区不卡| gogogo免费视频观看亚洲一| 久久99蜜桃精品| 日韩不卡免费视频| 亚洲一区二区三区四区在线免费观看| 中文一区在线播放| 久久青草欧美一区二区三区| 日韩一级高清毛片| 欧美欧美午夜aⅴ在线观看| 99久久精品国产麻豆演员表| 国产呦萝稀缺另类资源| 美腿丝袜亚洲三区| 午夜伊人狠狠久久| 亚洲一区二区三区在线看| 国产精品美女www爽爽爽| 2017欧美狠狠色| 精品蜜桃在线看| 日韩一级在线观看| 欧美一区二区三区免费| 777xxx欧美| 欧美日韩在线一区二区| 色网站国产精品| 99国产精品99久久久久久| 国产99久久久国产精品免费看 | 精品一区二区三区免费观看| 琪琪久久久久日韩精品| 亚洲午夜电影网| 亚洲综合在线第一页| 亚洲黄色小视频| 一区二区三区视频在线看| 最新成人av在线| 中文字幕色av一区二区三区| 国产精品视频一二| 国产欧美1区2区3区| 欧美国产综合色视频| 欧美国产精品劲爆| 国产午夜精品久久| 国产欧美一区二区精品仙草咪| 久久久久青草大香线综合精品| 久久久久久久久久久电影| 久久久精品人体av艺术| 欧美激情一区二区| 国产精品美女久久久久久| 国产精品麻豆欧美日韩ww| 国产精品视频一二三区 | 国产免费成人在线视频| 久久精品在线免费观看| 国产精品日产欧美久久久久| 中文字幕永久在线不卡| 亚洲精品视频一区二区| 亚洲国产人成综合网站| 日韩精品视频网站| 麻豆精品一区二区综合av| 国内欧美视频一区二区| 国产激情91久久精品导航| 岛国精品在线观看| 91免费版在线| 欧美日韩免费不卡视频一区二区三区| 欧美高清视频一二三区 | 亚洲欧美一区二区视频| 一级中文字幕一区二区| 午夜国产精品影院在线观看| 麻豆一区二区99久久久久| 国产在线一区二区| 丁香天五香天堂综合| 色综合激情五月| 7777女厕盗摄久久久| 久久久久久亚洲综合| 国产精品色呦呦| 亚洲日本在线看| 性久久久久久久| 国产一区二区三区免费在线观看| 成人激情校园春色| 精品视频资源站| 日韩免费视频一区| 欧美韩日一区二区三区| 亚洲一级二级在线| 久久国产人妖系列| 成年人午夜久久久| 欧美日韩免费观看一区二区三区 | 久久久噜噜噜久久中文字幕色伊伊 | 久久综合九色综合欧美98 | 中文字幕一区二区三中文字幕| 一区二区三区四区亚洲| 日本亚洲欧美天堂免费| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 午夜精品久久久久久久99樱桃| 久久se这里有精品| 99国产麻豆精品| 日韩一区二区电影| 国产精品电影院| 青青草成人在线观看| 岛国精品一区二区| 欧美日韩久久一区| 日本一区二区三区国色天香| 亚洲电影一级片| 国产传媒日韩欧美成人| 91福利在线免费观看| 精品国产一二三| 亚洲九九爱视频| 国产在线精品免费av| 色88888久久久久久影院野外| 精品久久一区二区| 一区二区在线观看av| 精品一区二区三区免费| 日本精品裸体写真集在线观看| 欧美成人女星排名| 一区二区三区高清| 国产91丝袜在线18| 欧美一级免费大片| 亚洲丝袜美腿综合| 精品一区二区三区香蕉蜜桃| 在线观看国产精品网站| 国产亚洲一区二区三区| 日韩影视精彩在线| 91美女片黄在线| 久久亚区不卡日本| 日韩在线a电影| 色婷婷狠狠综合| 久久久99精品免费观看不卡| 肉丝袜脚交视频一区二区| 99久久久国产精品免费蜜臀| 欧美成人一区二区三区片免费| 亚洲一区二区三区四区在线| 国产a级毛片一区| 日韩一区二区在线观看视频播放| 亚洲人成网站色在线观看| 国产一区二区三区黄视频| 7777精品伊人久久久大香线蕉的 | 97国产精品videossex| 久久久久久久电影| 青青草成人在线观看| 欧美在线三级电影| 懂色av一区二区三区蜜臀|