[求助] 急求啊! U盤初始化一直不來中斷

我用的貴公司CH375V片子。使用過程中發(fā)現(xiàn)執(zhí)行命令CMD_DISK_INIT做U盤初始化時CH375的P1(INT)腳一直不來中斷。操作步驟如下: 1。發(fā)命令CMD_CHECK_EXIST檢查工作狀態(tài),返回數(shù)據(jù)確實已經(jīng)按位取反 2。發(fā)命令CMD_RESET_ALL硬件復(fù)位 3。發(fā)命令CMD_SET_USB_MODE設(shè)置工作模式6 4。檢測U盤連接,返回15H 5。發(fā)命令CMD_DISK_INIT始U盤初始化, 此時CH375的P1(INT)腳一直不來中斷,因此程序一直在while循環(huán)里等中斷。奇怪的是這時程序只要暫停一下,中斷就來了,繼續(xù)運行用CMD_GET_STATUS命令讀回中斷狀態(tài)字是14H,這就正常初始化了。

我用CMD_GET_STATUS命令檢查U盤出錯狀況,結(jié)果返回中斷狀態(tài)字1F,表示USB 存儲設(shè)備操作失敗。用CMD_DISK_READ命令檢查U盤是否準備好也返回1F

請問各位高手版主們啊,這時什么問題??? 謝謝謝謝!! 已經(jīng)折磨我很久了...... 代碼如下:

cmd(CMD_CHECK_EXIST); // 檢查375工作與否 wrd(0xee); // 向375寫數(shù)據(jù) stat_Check=re(); cmd(CMD_RESET_ALL); //硬件復(fù)位 delay(40); cmd(CMD_SET_USB_MODE); //375初始化,設(shè)置模式 wrd(0x06); _NOP(); while(WaitINT_USBConct()!=USB_INT_CONNECT); // u盤插上與否,WaitINT_USBConct()函數(shù)讀中斷,返回15H delay(400); cmd( CMD_DISK_INIT ); // u盤初始化 stat_Disk=WaitINT_DiskInit();// 這里出錯,一直在while等中斷,中斷不停不來:((

這個首先你的U盤電壓穩(wěn)定不穩(wěn)定在5V左右,其次就是自己初始化的話,那么你可以參考下面的流程來做下看可以不可以: UINT8 mInitDisk( void ) { /* 初始化磁盤 */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB設(shè)備斷開 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲器 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出現(xiàn)錯誤 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ else { mDelaymS( 250 ); CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) /* 出現(xiàn)錯誤 */ continue; else return (Status); } if(j==5) return(Status); } for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ } return( 0 ); /* U盤已經(jīng)成功初始化 */ }


這里的Status = mWaitInterrupt( )是不是庫函數(shù),怎么寫?


1.不是庫函數(shù) unsigned char mWaitInterrupt() { /* 主機端等待操作完成, 返回操作狀態(tài) */ while( CH375_INT_WIRE ); /* 查詢等待CH375操作完成中斷(INT#低電平) */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ return( CH375_RD_DAT_PORT( ) ); }


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

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