按照你說的,在先插上U盤操作不正常那么你的程序停在什么地方呢????有返回錯誤代碼嗎??
每次都是死在: void xQueryInterrupt( void ) /* 查詢中斷狀態(tài),等待硬件中斷 */ { while ( CH375IntStatus == 0 ); /* 子程序庫調用該子程序之前CH375IntStatus=0,硬件中斷后,由中斷服務程序置為非0的實際中斷狀態(tài)后返回 */ }
應該沒有中斷信號了! 所以我不知道貴公司提供的子程序庫中是在哪里調用了該函數! 我一直都沒有調用該函數!
我知道是停在了這里,關鍵問題是是哪個庫函數停在了這個地方?
ucErr = CH375FileRead();
當熱插拔U盤的時候,都會產生一個中斷信號! 我想問問: 當我上電前插上U盤,再初始化, 和上電初始化完畢后,再插上U盤! 這兩個過程中是不是處理不同? 比如說,初始化完畢后,再插上U盤,會有進入中斷,檢測到了U盤已經連接后,內部是不是做了什么處理, 而先插上U盤,再上電初始化,則沒有做那些相應的處理過程! 才使得兩種方式,得到結論不同! 我的中斷函數如下: void CH375Interrupt(void) { //INT8U ucErr;
xWriteCH375Cmd( CMD_GET_STATUS ); /* 獲取中斷狀態(tài)并取消中斷請求 */ CH375IntStatus = xReadCH375Data( ); /* 獲取中斷狀態(tài) */ if ( CH375IntStatus == USB_INT_DISCONNECT ) { CH375DiskStatus = DISK_DISCONNECT; g_ulUDiskCurStatus = DISK_DISCONNECT; } else if ( CH375IntStatus == USB_INT_CONNECT ) { CH375DiskStatus = DISK_CONNECT; g_ulUDiskCurStatus = DISK_CONNECT; } }
我自己沒有做什么處理,你們公司的子程序庫有沒有做什么處理呢? 麻煩貴公司的技術人員,能幫我查查這個問題,非常感謝!
你可以這樣試下看可以不可以,就是在初始化我們庫的時候,也就是CH375LIBInit()這個函數的時候,將中斷關閉掉,當所有的初始化完成之后在將中斷打開試下看看
我先看看
還是不行??! 現在咋整?
void xQueryInterrupt( void ) /* 查詢中斷狀態(tài),等待硬件中斷 */ { while ( CH375IntStatus == 0 ); /* 子程序庫調用該子程序之前CH375IntStatus=0,硬件中斷后,由中斷服務程序置為非0的實際中斷狀態(tài)后返回 */ } 你們子程序庫是在哪個地方調用的! 為什么總是死在這個位置上?
請問一下: 怎么編寫一個函數,該函數的功能為模擬U盤的斷開與連接! 我想編寫一個這樣的函數,看看是不是能解決問題! 還貴公司的技術人員繼續(xù)幫忙,非常感謝!
有中斷的時候才會進這個函數,具體的哪些命令會產生中斷的話,那你可以參考CH375DS1和CH375DS2
好,我先查查!
請問一下: 怎么編寫一個函數,該函數的功能為模擬U盤的斷開與連接! 我想編寫一個這樣的函數,看看是不是能解決問題! 還貴公司的技術人員繼續(xù)幫忙,非常感謝!
模擬U盤的插拔你可以將375的模式設置在模式6和模式7之間進行切換。設置為模式6后,U盤在的話可以產生U盤連接的中斷USB_INT_CONNECT,也就相當于模擬U盤的插入;但設置模式7模擬U盤拔出,并不能產生U盤斷開的中斷USB_INT_DISCONNECT。