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

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

?? ch375_host_int_para.c

?? CH375這個經典的芯片
?? C
?? 第 1 頁 / 共 2 頁
字號:
	issue_token(( 0 << 4 ) | DEF_USB_PID_SETUP);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* SETUP階段操作成功 */
	{	toggle_send();
		Request.Req_buf[0]=0x01;
		wr_usb_data(1,Request.Req_buf);
		issue_token(( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt();
		if(status==USB_INT_SUCCESS) /* DATA階段操作成功 */
		{	endp6_mode=0xc0;
			toggle_recv();
			issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
			if(status==USB_INT_SUCCESS)/* 狀態階段操作成功 */
			{	if(rd_usb_data(data_buf)!=0)
				return(0);
			}
			else return(0);
		}
		else return(0);
	}	
	else return(0);
	
	
	return(1);
}
unsigned char get_descr_ex()
{	unsigned char descr_len;
	unsigned char *p=data_buf;
	endp7_mode=0x80;
	toggle_send();
	wr_usb_data(8,Request.Req_buf);
	issue_token(( 0 << 4 ) | DEF_USB_PID_SETUP);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* SETUP階段操作成功 */
	{	endp6_mode=0xc0;
		toggle_recv();
	}
	else return(0);
	issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* DATA階段操作成功 */
	{	if(flag_config_2)descr_len=data_buf[2]-rd_usb_data(data_buf);
		else descr_len=data_buf[0]-rd_usb_data(data_buf);	
		while(descr_len>0)
		{	toggle_recv();
			p+=0x08;
			issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
			if(status==USB_INT_SUCCESS)	/* DATA階段操作成功 */
				descr_len-=rd_usb_data(p);	
			else return(0);
			
		}
	}
	else return(0);
	endp7_mode=0xc0;
	toggle_send();
	wr_usb_data(0,Request.Req_buf);
	issue_token(( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* 狀態階段操作成功 */
		return(1);	
	else return(0);
}
unsigned char get_report_descr_ex()		
{	unsigned char descr_len;
	unsigned char *p=data_buf;
	unsigned char report_cou_temp=0;
	report_cou=0;
	endp7_mode=0x80;					
	toggle_send();						
	wr_usb_data(8,Request.Req_buf);		
	issue_token(( 0 << 4 ) | DEF_USB_PID_SETUP);status=wait_interrupt();	
	if(status==USB_INT_SUCCESS)/* SETUP階段操作成功 */
	{	endp6_mode=0xc0;	
		toggle_recv();
	}
	else return(0);
	issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* DATA階段操作成功 */
	{	rd_usb_data(data_buf);
		report_cou+=8;	
		descr_len=Request.Req_buf[6]-0x08;/*剩余描述符長度計算*/
		while(descr_len>0)
		{	toggle_recv();
			p+=0x08;
			issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt();
			if(status==USB_INT_SUCCESS)	/* DATA階段操作成功 */
			{	report_cou_temp=rd_usb_data(p);
				if(report_cou_temp!=0x08){report_cou+=report_cou_temp;break;}
				else {descr_len-=0x08;report_cou+=8;}
			}
			else return(0);
			
		}
	}
	else return(0);
	endp7_mode=0xc0;
	toggle_send();
	wr_usb_data(0,Request.Req_buf);
	issue_token(( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt();
	if(status==USB_INT_SUCCESS)/* 狀態階段操作成功 */
		return(1);	
	else return(0);
}
void get_int_in()
{	endp6_mode=0x80;
	toggle_recv();
	issue_token(( endp_int << 4 ) | DEF_USB_PID_IN);//status=wait_interrupt();
}
void reset_device()
{	
/* USB規范中未要求在USB設備插入后必須復位該設備,但是計算機的WINDOWS總是這樣做,所以有些USB設備也要求在插入后必須先復位才能工作 */
	set_usb_mode( 7 );  /* 復位USB設備,CH375向USB信號線的D+和D-輸出低電平 */
	delayms(10);
	set_usb_mode( 6 );  /* 結束復位 */
	while ( wait_interrupt()!=USB_INT_CONNECT );  /* 等待復位之后的設備端再次連接上來 */

}
unsigned char get_descr( unsigned char type ) {  /* 從設備端獲取描述符 */
	status=0xff;
	CH375_WR_CMD_PORT( CMD_GET_DESCR );
	CH375_WR_DAT_PORT( type );  /* 描述符類型, 只支持1(設備)或者2(配置) */
	status=wait_interrupt();  /* 等待CH375操作完成 */
	if ( status==USB_INT_SUCCESS ) {  /* 操作成功 */
		unsigned char i, len;
		len=rd_usb_data( data_buf );
		printf( "%s描述符是:", type==1?"設備":"配置" );
		for ( i=0; i!=len; i++ ) printf( "%02x ", (unsigned int)data_buf[i] );
		printf( "\n" );
	}
	return( status );
}
unsigned char set_addr( unsigned char addr ) {  /* 設置設備端的USB地址 */
	unsigned char status;
	CH375_WR_CMD_PORT( CMD_SET_ADDRESS );  /* 設置USB設備端的USB地址 */
	CH375_WR_DAT_PORT( addr );  /* 地址, 從1到127之間的任意值, 常用2到20 */
	status=wait_interrupt();  /* 等待CH375操作完成 */
	if ( status==USB_INT_SUCCESS ) {  /* 操作成功 */
		CH375_WR_CMD_PORT( CMD_SET_USB_ADDR );  /* 設置USB主機端的USB地址 */
		CH375_WR_DAT_PORT( addr );  /* 當目標USB設備的地址成功修改后,應該同步修改主機端的USB地址 */
	}
	return( status );
}
unsigned char set_config( unsigned char cfg ) {  /* 設置設備端的USB配置 */
	CH375_WR_CMD_PORT( CMD_SET_CONFIG );  /* 設置USB設備端的配置值 */
	CH375_WR_DAT_PORT( cfg );  /* 此值取自USB設備的配置描述符中 */
	return( wait_interrupt() );  /* 等待CH375操作完成 */
}
void parse_config_descr()
{	unsigned char i;
	num_interfaces=data_buf[4];		//保存接口數
	config_value=data_buf[5];		//保存配置值
	for(i=0;i!=data_buf[2];i++)
	{	if((data_buf[i]==0x09)&&(data_buf[i+1]==0x04))//接口描述符
		{	}
		if((data_buf[i]==0x09)&&(data_buf[i+1]==0x21))//HID描述符
		{	report_descr_len=data_buf[i+7];}			//REPORT描述符長度
		if((data_buf[i]==0x07)&&(data_buf[i+1]==0x05))//端點描述符
		{	endp_int=data_buf[i+2]&0x0f;}				//中斷端點號
	}	
}
void main() {
	unsigned char i;
	mInitSTDIO( );
	delayms(250);
	set_usb_mode( 6 );  /* 設置USB主機模式, 如果設備端是CH37X, 那么5和6均可 */
#ifdef	TEST_LOW_SPEED
	set_freq( );	       //使375B進入低速模式
#endif
	while(1)
	{	while ( wait_interrupt()!=USB_INT_CONNECT );  /* 等待設備端連接上來 */
		delayms(5);
		reset_device();
		delayms(5);
        set_freq( );       //使375B進入低速模式

//	get_descr(0x01);//獲取設備描述符
//	printf("device\n");
	Request.Req.bmRequestType=0x80;
	Request.Req.bRequest=0x06;
	Request.Req.wValue=0x0001;
	Request.Req.wIndex=0x0000;
	Request.Req.wLength=0x1200;
	if(get_descr_ex()==1)
	{	for(i=0;i!=data_buf[0];i++)
			printf("%02x ",(unsigned int)data_buf[i]);	
		printf("\n");
	}
	else printf("get device descr failed\n");
		
	set_addr(5);//設置地址

//	get_descr(0x02);//獲取配置描述符
	printf("config\n");
	Request.Req.bmRequestType=0x80;
	Request.Req.bRequest=0x06;
	Request.Req.wValue=0x0002;
	Request.Req.wIndex=0x0000;
	Request.Req.wLength=0x0900;
	if(get_descr_ex()==1)
	{	for(i=0;i!=data_buf[0];i++)
			printf("%02x ",(unsigned int)data_buf[i]);	
		printf("\n");
        if(data_buf[4]!=0x01)flag_interface_2=1;//有多個接口
	}
	else printf("get config descr failed\n");
		
	printf("config 2\n");
	if(data_buf[2]>0x09)
	{	flag_config_2=1;
		Request.Req.bmRequestType=0x80;
		Request.Req.bRequest=0x06;
		Request.Req.wValue=0x0002;
		Request.Req.wIndex=0x0000;
		Request.Req.wLength=0x0000|((unsigned int)data_buf[2]<<8);
		if(get_descr_ex()==1)
		{	for(i=0;i!=data_buf[2];i++)
				printf("%02x ",(unsigned int)data_buf[i]);	
			printf("\n");
			flag_config_2=0;
		}	
		else printf("get device descr again failed\n");
	}

	parse_config_descr();//保存描述符中一些值

	set_config(config_value);//設置配置
//	printf("set config\n");
//	if(set_config_ex()!=1)printf("set config failed\n");
	
	printf("set idle\n");
	if(set_idle()!=1)printf("set idle failed\n");
	
	printf("report\n");
	Request.Req.bmRequestType=0x81;
	Request.Req.bRequest=0x06;
	Request.Req.wValue=0x0022;
	Request.Req.wIndex=0x0000;
	Request.Req.wLength=0x0000|((unsigned int)(report_descr_len+0x40)<<8);
	if(get_report_descr_ex()==1)
	{	for(i=0;i!=report_cou;i++)
			printf("%02x ",(unsigned int)data_buf[i]);	
		printf("\n");
	}
	else printf("get report descr failed\n");
	
	printf("set report\n");		//對于鍵盤這一步,是點亮指示燈
	if(set_report()!=1)printf("set report failed\n");
	
	delayms(250);
	EA=1;			//打開中斷,從中斷端點接收數據
	get_int_in();	//發送從中斷端點讀數據的令牌
	do{	
		if(flag_output==1)
		{	for(i=0;i!=8;i++)printf("%02x ",(unsigned int)data_in[i]);
			printf("\n");
			flag_output=0;
		}
	}while(1);
	while ( wait_interrupt()!=USB_INT_DISCONNECT );  /* 等待設備端連接上來 */
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜小视频| 欧美亚州韩日在线看免费版国语版| 亚洲老司机在线| 国产精品无人区| 国产日本一区二区| 久久久久99精品国产片| 久久亚洲免费视频| 久久亚洲精精品中文字幕早川悠里 | 久久精品国产精品青草| 舔着乳尖日韩一区| 免费成人在线观看| 国产在线视视频有精品| 国产精品伊人色| 国产成人午夜精品影院观看视频| 国产成人一区在线| 成人看片黄a免费看在线| 99久久综合精品| 91久久精品网| 欧美一区二区三区免费视频 | 国产在线看一区| 高清shemale亚洲人妖| 99国产精品久久久| 欧美日精品一区视频| 51久久夜色精品国产麻豆| 欧美电影精品一区二区| 久久精品欧美一区二区三区不卡| 亚洲三级免费电影| 亚洲成人综合网站| 国内精品不卡在线| 色综合欧美在线| 欧美一区二区成人| 久久精品夜色噜噜亚洲a∨| 中文字幕五月欧美| 日韩国产欧美在线视频| 国产老女人精品毛片久久| 93久久精品日日躁夜夜躁欧美| 欧美三级日韩三级| 久久久www成人免费无遮挡大片| 亚洲视频在线一区观看| 日韩成人dvd| jlzzjlzz欧美大全| 91精品国产综合久久小美女 | 日韩精品一区二区在线| 欧美国产乱子伦| 日韩av二区在线播放| 99re66热这里只有精品3直播| 欧美一卡二卡三卡四卡| 中文字幕成人在线观看| 亚洲第一狼人社区| 成人精品视频一区| 日韩欧美综合一区| 亚洲一二三四在线| 成人免费视频一区二区| 日韩一级片网址| 亚洲国产精品久久不卡毛片 | 麻豆国产91在线播放| 91蜜桃网址入口| 久久久亚洲国产美女国产盗摄 | 678五月天丁香亚洲综合网| 国产欧美一区二区在线观看| 午夜精品久久一牛影视| 99久久精品情趣| 国产欧美日韩不卡免费| 蜜臀a∨国产成人精品| 欧美日韩在线观看一区二区 | 色综合天天综合| 国产无人区一区二区三区| 天天综合色天天| 欧美日韩小视频| 亚洲一区日韩精品中文字幕| 99久久99久久精品免费看蜜桃| 久久久精品影视| 国产精品一区二区在线观看网站| 日韩一区二区不卡| 日韩电影网1区2区| 91精品在线麻豆| 日韩激情中文字幕| 欧美日韩国产首页| 性久久久久久久久| 欧美日韩一区二区在线观看| 精品一区二区三区视频在线观看| 欧美日韩中文精品| 亚洲一二三四在线观看| 欧美日韩一区二区三区四区五区| 亚洲精品一卡二卡| 日本久久一区二区| 亚洲在线一区二区三区| 在线精品国精品国产尤物884a| 亚洲综合精品自拍| 欧美福利视频一区| 美女视频一区二区三区| 欧美大片顶级少妇| 国产aⅴ精品一区二区三区色成熟| 久久精品欧美一区二区三区麻豆| 成人综合婷婷国产精品久久免费| 国产精品久久午夜夜伦鲁鲁| 97久久精品人人爽人人爽蜜臀| 亚洲人成在线播放网站岛国| 欧美做爰猛烈大尺度电影无法无天| 夜夜精品视频一区二区| 欧美日韩一区二区三区四区五区| 天堂久久久久va久久久久| 欧美不卡一区二区三区| 国产在线视视频有精品| 国产精品久久毛片| 欧美性一级生活| 日韩精品免费专区| 久久久久久久久伊人| aa级大片欧美| 亚洲国产精品一区二区久久恐怖片| 欧美一区二区福利在线| 国产高清在线精品| 亚洲精品ww久久久久久p站| 欧美乱熟臀69xxxxxx| 国内一区二区在线| 亚洲精选一二三| 日韩精品自拍偷拍| av亚洲产国偷v产偷v自拍| 亚洲一区免费在线观看| 欧美精品一区二区三区高清aⅴ| 99re热这里只有精品免费视频| 石原莉奈一区二区三区在线观看 | 日本三级亚洲精品| 中文欧美字幕免费| 在线综合亚洲欧美在线视频| 国产盗摄视频一区二区三区| 亚洲成人一区在线| 国产区在线观看成人精品| 欧美色欧美亚洲另类二区| 国产精品综合在线视频| 亚洲成a人v欧美综合天堂下载 | jizzjizzjizz欧美| 蜜桃av一区二区三区电影| 中文字幕制服丝袜成人av| 欧美一区二区三级| 91成人在线观看喷潮| 成人黄色国产精品网站大全在线免费观看| 亚洲成人中文在线| 亚洲人妖av一区二区| 欧美精品一区二区久久婷婷| 欧美中文一区二区三区| 不卡的电视剧免费网站有什么| 麻豆精品精品国产自在97香蕉| 亚洲人成精品久久久久| 国产午夜精品美女毛片视频| 日韩欧美亚洲国产另类 | 精品国产电影一区二区| 欧美三级中文字| 色偷偷一区二区三区| 成人福利视频在线| 国产美女精品一区二区三区| 婷婷六月综合网| 亚洲午夜影视影院在线观看| 亚洲女同女同女同女同女同69| 亚洲国产精品精华液2区45| 欧美大尺度电影在线| 91精品国产综合久久小美女| 欧美日韩综合色| 欧美日韩三级一区二区| 色久综合一二码| 日本精品一区二区三区高清| 波波电影院一区二区三区| 国产91对白在线观看九色| 国产黑丝在线一区二区三区| 国产一区美女在线| 久久超碰97中文字幕| 日韩av网站在线观看| 免费观看91视频大全| 麻豆91在线看| 国产在线精品一区二区夜色| 激情文学综合网| 国产很黄免费观看久久| 国产.欧美.日韩| 成人av在线资源| 色综合天天综合色综合av| 欧洲一区二区三区在线| 欧美肥大bbwbbw高潮| 日韩一区二区精品| 久久亚洲捆绑美女| 国产欧美日韩精品a在线观看| 国产精品久线在线观看| 亚洲美女免费视频| 亚洲自拍与偷拍| 日韩影视精彩在线| 精品一区二区三区免费播放| 国产在线播精品第三| 高潮精品一区videoshd| av成人老司机| 欧美日韩一区中文字幕| 日韩欧美激情一区| 中文字幕精品一区二区三区精品| 亚洲激情图片qvod| 青草国产精品久久久久久| 精品亚洲国内自在自线福利| 成人动漫av在线| 欧美狂野另类xxxxoooo| 亚洲精品一区二区在线观看| 国产精品美女久久久久久久| 亚洲一区二区三区影院| 蜜臂av日日欢夜夜爽一区|