列舉目錄下的所有文件時(shí),只能顯示第一個(gè)文件[求助]

我將ch376和5000系列DSP相連,用例程中的80行代碼列舉目錄下的所有文件和文件夾,可是每次程序運(yùn)行時(shí)只能列出第一個(gè)文件或者文件夾,我發(fā)現(xiàn)原因是只有第一次執(zhí)行CMD01_RD_USB_DATA0命令才能引起ch376的D7拉低(中斷),當(dāng)程序執(zhí)行CMD0H_FILE_ENUM_GO時(shí),ch376的D7便不再拉低,所以程序一直停留在等待D7拉低(中斷)。這樣也只能顯示第一個(gè)文件名了。 出現(xiàn)錯(cuò)誤后,我從并口讀到的數(shù)據(jù)一直是0XA0 我發(fā)現(xiàn)一個(gè)現(xiàn)象:用示波器量D7時(shí),可以捕捉到最開(kāi)始的初始化中斷,但是INT#腳上的中斷始終沒(méi)有(一直高電平)。

請(qǐng)問(wèn)這是咋回事?。?/p>


熱門(mén)產(chǎn)品 : USB3.0 HUB控制器:CH634

CH376芯片是DSP接口是什么接口?這個(gè)估計(jì)還是時(shí)序上面有點(diǎn)問(wèn)題。至于你說(shuō)的INT#引腳沒(méi)有中斷產(chǎn)生很好判斷。只要設(shè)置好CH376的模式之后。插入U(xiǎn)盤(pán),這個(gè)時(shí)候程序不運(yùn)行。INT#引腳應(yīng)該一直為低電平。


CH376芯片和DSP接口是DSP的數(shù)據(jù)接口D0-D7,CH376的片選和A0接DSP的地址總線。 您說(shuō)的時(shí)序的問(wèn)題,我貌似也有同感,因?yàn)槲野严旅娴拇a: UINT8 mWaitInterrupt( void ) {/* 等待CH376中斷并獲取狀態(tài),主機(jī)端等待操作完成,返回操作狀態(tài) */ while( CH376_CMD_PORT & PARA_STATE_INTB ); /* 查詢等待CH376操作完成中斷(INT#低電平) */ xWriteCH376Cmd( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷,獲取中斷狀態(tài) */ return( xReadCH376Data( ) ); }

改寫(xiě)為:

UINT8 mWaitInterrupt( void ) {/* 等待CH376中斷并獲取狀態(tài),主機(jī)端等待操作完成,返回操作狀態(tài) */ while(1) { if( CH376_CMD_PORT & PARA_STATE_INTB ) /* 查詢等待CH376操作完成中斷(INT#低電平) */ break; else /* 防止CH376老在那兒等待中斷*/ { mDelaymS( 200 ); break; } } xWriteCH376Cmd( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷,獲取中斷狀態(tài) */ return( xReadCH376Data( ) ); }

那么便可以列舉打印出目錄下的所有的文件和文件夾,但是在列舉打印出的文件之間會(huì)顯示幾個(gè)Error status XX, (產(chǎn)生這個(gè)打印信息也是可以理解的,因?yàn)槌绦蛑杏腥缦麓a: void mStopIfError( UINT8 iErrCode ) { if ( iErrCode == USB_INT_SUCCESS ) return; printf( "Error status, %02X\n", (UINT16)iErrCode ); })

請(qǐng)問(wèn):如何解決時(shí)序的問(wèn)題呢?


延時(shí)的時(shí)間有點(diǎn)長(zhǎng)。建議你直接使用中斷引腳的方式來(lái)判斷中斷是否來(lái)了更加的合理。


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

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