遇到了一些問(wèn)題: void mDelayuS( unsigned char N ) {/* 微秒級(jí)精確延時(shí)函數(shù),延時(shí)時(shí)間2*N+5 us*/
while (-- N); }
void mDelaymS( unsigned char N ) { /* 毫秒級(jí)延時(shí)函數(shù),延時(shí)N ms */ while (N --) { mDelayuS(245); mDelayuS(246); } } /* 將程序空間的字符串復(fù)制到內(nèi)部RAM中,返回字符串長(zhǎng)度 */ UINT8 mCopyCodeStringToIRAM( UINT8 idata *iDestination, UINT8 code *iSource ) { UINT8 i = 0; while ( *iDestination = *iSource ) { iDestination ++; iSource ++; i ++; } return( i ); }
/* 檢查操作狀態(tài),如果錯(cuò)誤則顯示錯(cuò)誤代碼并停機(jī) */ void mStopIfError( UINT8 iError ) { if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ while ( 1 ) { LED_OUT_ACT( ); /* LED閃爍 */ mDelaymS( 200 ); LED_OUT_INACT( ); mDelaymS( 200 ); } } main( ) { UINT8 i,j; UINT32 y; LED_RUN_ACT( ); /* 開機(jī)后LED亮一下以示工作 */ mDelaymS( 100 ); /* 延時(shí)100毫秒 */ LED_RUN_INACT( ); /* LED熄滅*/ CH375_CMD_PORT = CMD_RESET_ALL;//執(zhí)行硬件復(fù)位 mDelaymS( 60 ); /* 延時(shí)60毫秒 */ //執(zhí)行硬件復(fù)位 CH375Reset( ); /* 復(fù)位CH375 */ mDelaymS( 50 ); /* 延時(shí)50毫秒 */
i = CH375LibInit( ); /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它電路初始化 */ /**************/ while ( 1 ) { while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ while ( CH375DiskStatus < DISK_CONNECT ) { /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ if ( CH375DiskConnect( ) == ERR_SUCCESS ) break; /* 有設(shè)備連接則返回成功,CH375DiskConnect 同時(shí)會(huì)更新全局變量CH375DiskStatus */ mDelaymS( 100 );/* 延時(shí)100毫秒 */ } LED_RUN_ACT( ); /* LED亮 */ mDelaymS( 200 ); /* 延時(shí),保證可靠通用,有的USB存儲(chǔ)器需要幾十毫秒的延時(shí) */ /**************/ /* 檢查U盤是否準(zhǔn)備好,某些U盤必須要執(zhí)行這一步才能工作 */ for ( i = 0; i < 5; i ++ ) { /* 有的U盤總是返回未準(zhǔn)備好,不過(guò)可以被忽略, */ mDelaymS( 100 ); if ( ( i=CH375DiskReady( ) )== ERR_SUCCESS ) break; /* 查詢磁盤是否準(zhǔn)備好,延時(shí)500毫秒后自動(dòng)跳過(guò)去*/ } mStopIfError( i );//測(cè)試 /* 查詢磁盤物理容量 */ LED_RUN_ACT( ); /* LED亮 */ mDelaymS( 100 );//????????????? i = CH375DiskSize( ); mStopIfError( i ); //測(cè)試 mDelaymS( 10 ); y=mCmdParam.DiskSize.mDiskSizeSec;//??????????????
LED_RUN_ACT( ); /* 開始操作U盤 */ /* 如果LI.TXT文件已經(jīng)存在則添加數(shù)據(jù)到尾部,如果不存在則新建文件 */ mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/LI.TXT" ); /* 文件名,該文件在根目錄下 */ i = CH375FileOpen( ); /* 打開文件 */ …… } 我再論壇上看到說(shuō)在程序執(zhí)行過(guò)程中,一般能執(zhí)行過(guò) CH375DiskReady( )成功的話后面的操作一般沒有問(wèn)題!但是在上面程序中,我的執(zhí)行過(guò)了這條函數(shù)指令,返回結(jié)果也是0,應(yīng)該是成功執(zhí)行了,但是在執(zhí)行 mDelaymS( 100 );//????????????? i = CH375DiskSize( ); mStopIfError( i ); //測(cè)試 mDelaymS( 10 ); y=mCmdParam.DiskSize.mDiskSizeSec;//??????????????是查詢磁盤容量結(jié)果y總是0x5F5F5F(結(jié)果應(yīng)該是錯(cuò)誤,我的盤是1G),并且在執(zhí)行i = CH375FileOpen( ); /* 打開文件 */時(shí)返回結(jié)果為0x82!調(diào)試不通呀,期待高手知道一下,提供一個(gè)思路也行!