我采用串口方式:程序如下: void main() { UINT8 i, c, SecCount; UINT16 NewSize, count; /* 因為RAM容量有限,所以NewSize限制為16位,實際上如果文件較大,應該分幾次讀寫并且將NewSize改為UINT32以便累計 */ UINT8 *pCodeStr; //------------------------------------------------------- init_devices(); //----------------------------------------------------------------------------- CH375_PORT_INIT(); //首先將串口初始化為9600 因為CH375默認的波特率是9600 mDelaymS( 300 ); /* 延時100毫秒 */ test_ch375(); //測試正常 CH375Init(); //初始化 375 到HOST模式 mDelaymS( 20 ); // 延時100毫秒 i = CH375LibInit( ); // 初始化CH375程序庫和CH375芯片,操作成功返回0 mStopIfError( i ); //判斷錯誤!
/* 其它電路初始化 */ ShowText(10,30,"等待插入U盤....."); while ( 1 ) { while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ mDelaymS( 200 ); /* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */
/* 檢查U盤是否準備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */ for ( i = 0; i < 5; i ++ ) /* 有的U盤總是返回未準備好,不過可以被忽略 */ { mDelaymS( 100 ); ShowText(10,46,"查詢U盤準備好了沒有....."); if( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準備好 */ } i=CH375DiskConnect(); //檢測U盤連接,可以成功檢測 if( i != ERR_SUCCESS ) { ShowText(10,200,"沒有連接"); While(1); }
/* 查詢磁盤物理容量 */ ShowText(10,200,"U盤容量: MB"); i = CH375DiskSize( ); mStopIfError( i ); //printf( "TotalSize = %d MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec >> 11 ) ); 顯示為以MB為單位的容量 ShowNumber(10, 18,( mCmdParam.DiskSize.mDiskSizeSec >> 11 ));
/* 讀取原文件 */ //printf( "Open\n" ); ShowText(10,62,"準備好,讀取文件....."); strcpy( (char *)mCmdParam.Open.mPathName, "/C51/CH375HFT.C" ); /* 文件名,該文件在C51子目錄下 */ ShowText(10,78,"正在打開文件....."); i = CH375FileOpen( ); /* 打開文件 */ ........后面的就不執(zhí)行了................