我開發(fā)了一個涉及 SD 卡和閃存的項目,并模擬了運行良好的 UDisk。我已經(jīng)做了一個 if 定義來選擇在編譯時使用哪個 USB 端口,并且一切正常?,F(xiàn)在我測試了 UFI 庫 EXAM1 項目,它單獨運行良好。當我將 EXAM1 代碼結(jié)合到我現(xiàn)有的項目中時,無法檢測到 pendrive,因此它無法執(zhí)行文件寫入。如果我將 USB2 連接到 PC,則模擬的 UDISK 功能也能正常工作,EXAM1 代碼也能正常工作。我的意思是,只有當 USB2 連接到 PC(模擬 udisk)時,USB 驅(qū)動器才會被檢測到并工作。可能是什么問題?
USB_HostInit(); CHRV3LibInit();
????????s?=?ERR_SUCCESS; ????????if(R8_USB_INT_FG?&?RB_UIF_DETECT) ????????{ ????????????R8_USB_INT_FG?=?RB_UIF_DETECT; ????????????PRINT("Analyse?RootHub\r\n");DelayMs(200); ????????????s?=?AnalyzeRootHub(); ????????????if(s?==?ERR_USB_CONNECT){FoundNewDev?=?1;} ????????} ????????if(FoundNewDev?||?s?==?ERR_USB_CONNECT) ????????{ ????????????FoundNewDev?=?0; ????????????mDelaymS(200); ????????????s?=?InitRootDevice(); ????????????if(s?==?ERR_SUCCESS) ????????????{ ????????????????CHRV3DiskStatus?=?DISK_USB_ADDR; ????????????????for(i=0;i!=10;i++) ????????????????{ ????????????????????PRINT("Wait?DiskReady\r\n"); ????????????????????s?=?CHRV3DiskReady(); ????????????????????if(s?==?ERR_SUCCESS){break;} ????????????????????else{PRINT("%02x\r\n",?(uint16_t)s);} ????????????????????mDelaymS(50); ????????????????} ????????????????if(CHRV3DiskStatus?>=?DISK_MOUNTED) ????????????????{ ????????????????????PRINT("Create\r\n"); ????????????????????strcpy((PCHAR)mCmdParam.Create.mPathName,?"/WCH-045.TXT"); ????????????????????s?=?CHRV3FileCreate(); ????????????????????mStopIfError(s); ????????????????????PRINT("ByteWrite\r\n"); ????????????????????i?=?sprintf((PCHAR)buf,?"This?file?is?generated?through?wch-ufi?library...\xa\xd"); ????????????????????for(c=0;c<2;c++) ????????????????????{ ????????????????????????mCmdParam.ByteWrite.mByteCount?=?i; ????????????????????????mCmdParam.ByteWrite.mByteBuffer?=?buf; ????????????????????????s?=?CHRV3ByteWrite(); ????????????????????????mStopIfError(s); ????????????????????} ????????????????????PRINT("Close\r\n"); ????????????????????mCmdParam.Close.mUpdateLen?=?1; ????????????????????i?=?CHRV3FileClose(); ????????????????????mStopIfError(i); ????????????????} ????????????} ????????}
上述代碼是當 USB2 未連接到 PC 時不會執(zhí)行的考試 1 代碼。