CH374 host 獲取設備描述符失敗,有的鍵盤又可以。怎么會這樣呢?

Init374Host();// 初始化USB主機
?
?while(1)
?{
??SetHostLeisure();//設定USB主機空閑
??while(1)
??{
???if (Query374Interrupt()) HostDetectInterrupt();? // 如果有USB主機中斷則處理
???if (Query374DeviceIn()) break;?????????????????? // 有USB設備
??? OSTimeDly(5); //100ms
??}
??
??OSTimeDly(14); //延時14*20ms = 280ms????? // 由于USB設備剛插入尚未穩(wěn)定,故等待USB設備數(shù)百毫秒,消除插拔抖動
??if(Query374Interrupt()) HostDetectInterrupt(); // 如果有USB主機中斷則處理
???
??HostSetReset();// USB總線復位
??
??for(i=0;i<100;i++ )// 等待USB設備復位后重新連接
??? {
???if(Query374DeviceIn())? break; // 有USB設備
???delay_us(1000);
??}
??
??if(Query374Interrupt()) HostDetectInterrupt( ); // 如果有USB主機中斷則處理
??
??if(Query374DeviceIn())// 有USB設備
??? {?
???if(Query374DevFullSpeed())
????? {
????HostSetFullSpeed();// 檢測到全速USB設備
????printf( "Start Full-Speed Device\r\n" );
???}
???else
????? {
????HostSetLowSpeed();// 檢測到低速USB設備
?????printf( "Start Low-Speed Device\r\n" );
???}
??}
??else
??? {
???continue;// 設備已經斷開,繼續(xù)等待
??}
??OSTimeDly(3); //延時3*20ms = 60ms
??
??close_bit_flag=0;//設備是否拔出
??
//1、獲取設備描述符??
??s = GetDeviceDescr(DeviceDescribe_buf); // 獲取設備描述符
??if(s != USB_INT_SUCCESS )
??? {
???printf("GetDeviceDescr Error\r\n");
???goto WaitDeviceOut;// 終止操作,等待USB設備拔出
??}
??
??printf("DeviceDescr:");
??for(i=0;i <((PUSB_SETUP_REQ)SetupGetDevDescr ) -> wLengthL;i++ )
??? printf("%02X ",DeviceDescribe_buf[i]);//輸出描述符
??printf( "\r\n" );


=======================================

串口輸出信息:

鍵盤1:

Start Low-Speed Device
GetDeviceDescr Error
Wait Device Out


鍵盤2:

Start Low-Speed Device
DeviceDescr:12 01 10 01 00 00 00 08 D5 05 89 06 03 01 00 01 00 01
SetUsbAddress:0X02 Success
GetConfigDescr:
09 02 3B 00 02 01 00 A0 32 09 04 00 00 01 03 01 01 00 09 21 10 01 00 01 22 41 00 07 05 81 03 08 00 0A 09 04 01 00 01 03 00 00 00 09 21 10 01 00 01 22 32 00 07 05 82 03 05 00 0A
hid_des_leng=41
endp_in_addr=01
endp_out_addr=00
GetConfigDescr Success
SetUsbConfig success


GetDeviceDescr出錯的返回值多少?


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频