程序運行到i = CH375FileOpen( )就不往下運行了??

我采用串口方式:程序如下: 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í)行了................

串口操作CH375時,保證波特率的精確性要高,串口不要用在其他方面,如printf( )函數(shù)和RS232連接等等, 把MCU的串口初試化為9位的串口 for ( i = 0; i < 5; i ++ ) /* 有的U盤總是返回未準備好,不過可以被忽略 */ { mDelaymS( 100 ); ShowText(10,46,"查詢U盤準備好了沒有....."); if( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準備好 */ } 有沒有正常通過?


上面的全部正常通過

只有到i = CH375FileOpen( ); /* 打開文件 */ 就不往下運行了?


我用的是ATM128 庫文件是CH375HFB.A 串口沒干其它的工作了,我測試CH375都正常通過 測試程序: unsigned int i,rdx ,t=0x99; xWriteCH375Cmd(CMD_CHECK_EXIST); //發(fā)一個測試命令 xWriteCH375Data(0x66); //發(fā)測試數(shù)據(jù) rdx = xReadCH375Data(); //接受數(shù)據(jù) if( rdx == t ) { ShowText(10,10,"測試正常"); ShowNumber(18, 10,rdx); //顯示測試后的數(shù)據(jù) ShowNumber(22, 10,CH375GetVer()); //顯示的版本號為 41 } else // 不正常 { ShowText(10,10,"測試不正常"); mDelaymS( 100 ); /* 延時100毫秒 */ ShowNumber(18, 10,rdx); ShowNumber(22, 10,CH375GetVer()); // while(1); }


(1)測試磁盤緩沖區(qū),寫入與讀出的數(shù)據(jù)是否一致 (2)i = CH375FileOpen()返回值是多少 (3)三個讀寫子程序中的延時是否過長,寫完命令1.5uS,數(shù)據(jù)0.6uS


如果使用庫A的話,在你進行讀寫函數(shù)之前,你可以把你的波特率調(diào)高點在去測試,相對于LIB5來說,LIBA的速度上面會比LIB5的速度慢,其次就是按照樓上的檢查相應的錯誤。


我現(xiàn)在把波特率調(diào)到了57600 寫命令和數(shù)據(jù)時間延遲了,現(xiàn)在執(zhí)行i = CH375FileOpen()后,能運行下面的程序的,但是返回的數(shù)據(jù)是 0x1f,


如果返回0X1F的話,這個時候你去看下DISK-BASE-BUF里面的數(shù)據(jù)是什么樣的數(shù)據(jù),還有就是把你的單片機的硬件資源說明下。以及你編譯的時候使用了多少RAM以及CODE


只有登錄才能回復,可以選擇微信賬號登錄

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