我的程序如下: int main() { UINT8 i, c, SecCount; UINT16 NewSize, count; /* 因?yàn)镽AM容量有限,所以NewSize限制為16位,實(shí)際上如果文件較大,應(yīng)該分幾次讀寫并且將NewSize改為UINT32以便累計(jì) */ UINT8 *pCodeStr;
CH375_PORT_INIT( ); LED_OUT_INIT( ); LED_OUT_ACT( ); /* 開機(jī)后LED亮一下以示工作 */ mDelaymS( 100 ); /* 延時(shí)100毫秒 */ LED_OUT_INACT( ); mInitSTDIO( ); /* 為了讓計(jì)算機(jī)通過串口監(jiān)控演示過程 */ printf( "Start\n" ); CH375_Hard_Reset(); i = CH375LibInit( ); /* 初始化CH375程序庫和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它電路初始化 */
while ( 1 ) { printf( "Wait Udisk\n" ); // 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í)會更新全局變量CH375DiskStatus */ mDelaymS( 100 ); } LED_OUT_ACT( ); /* LED亮 */ mDelaymS( 200 ); /* 延時(shí),可選操作,有的USB存儲器需要幾十毫秒的延時(shí) */
/* 檢查U盤是否準(zhǔn)備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */ for ( i = 0; i < 10; i ++ ) { /* 有的U盤總是返回未準(zhǔn)備好,不過可以被忽略 */ mDelaymS( 100 ); printf( "Ready ?\n" ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準(zhǔn)備好 */ }
/* 查詢磁盤物理容量 */ printf( "DiskSize\n" ); i = CH375DiskSize( ); mStopIfError( i ); // printf( "TotalSize = %d MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec >> 11 ) ); 顯示為以MB為單位的容量
/* 讀取原文件 */ printf( "Open\n" ); strcpy( (char *)mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C" ); /* 文件名,該文件在C51子目錄下 */ i = CH375FileOpen( ); /* 打開文件 */ if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) { …… ……
調(diào)試時(shí),初始化通過了,通過程序CH375DiskConnect( )也檢測到了U盤已插入,但是往下進(jìn)行,不論是執(zhí)行子函數(shù)CH375DiskSize( )或者 CH375DiskReady( )或者CH375FileOpen( ),子函數(shù)總是返回0x1f,宏定義中說0x1f表示“ USB存儲器操作失敗,在初始化時(shí)可能是USB存儲器不支持,在讀寫操作中可能是磁盤損壞或者已經(jīng)斷開”,本身是在運(yùn)行中,U盤也插上了。請教諸位,有可能是什么問題呢?或者我應(yīng)該是這怎么調(diào)一下呢?急,謝謝?。?!