CH375 用 CH375FileWriteX()問題

用CH375ByteWrite( )正常寫入

CH375FileWriteX() 寫到U盤的數(shù)據(jù)。電腦上打開全是亂碼!

付代碼如下 for ( i=0; i<30; i++ ) { buf[i]=i; /* 指向文件數(shù)據(jù)緩沖區(qū) */ } mCmdParam.Locate.mSectorOffset=0xffffffff; CH375FileLocate(); mCmdParam.Write.mSectorCount=1; mCmdParam.WriteX.mDataBuffer =buf; CH375FileWriteX( ); 我用的是ADS1.2 周立功項目文件添加Lib的方式。

還有就是不定義#define FILE_DATA_BUF_LEN 1的話。 出Error : L6218E: Undefined symbol xWriteToExtBuf (referred from CH375SEC.O).

Error : L6218E: Undefined symbol xReadFromExtBuf (referred from CH375SEC.O).

Not enough information to list the image sizes and/or totals.

Finished: 1 information, 0 warning and 2 error messages.

這個錯誤不理解為什么?。。。≌垘徒獯鹣耓Emot]12[/Emot][Emot]12[/Emot][Emot]12[/Emot]

(1)buf中是什么內(nèi)容阿,會不會本身就是亂碼, for ( i=0; i<30; i++ ) { buf=i; /* 指向文件數(shù)據(jù)緩沖區(qū) */ } 是給buf賦值么?表達錯誤,應(yīng)是 buf[ i ] = i; (2)庫函數(shù)都有返回值,監(jiān)視一下,否則不知道哪步出錯 (3)這個編譯錯誤與庫的配置有關(guān),這樣試試: #define LIB_CFG_FILE_IO 1 /* 文件讀寫的數(shù)據(jù)的復(fù)制方式,0為"外部子程序",1為"內(nèi)部復(fù)制" */


#define LIB_CFG_FILE_IO 1 // 文件讀寫的數(shù)據(jù)的復(fù)制方式,0為"外部子程序",1為"內(nèi)部復(fù)制" #define LIB_CFG_INT_EN 0 // CH375的INT#引腳連接方式,0為"查詢方式",1為"中斷方式"

// 單片機的RAM有限,其中CH375子程序用512字節(jié),剩余RAM部分可以用于文件讀寫緩沖 #define DISK_BASE_BUF_LEN 512 // 默認的磁盤數(shù)據(jù)緩沖區(qū)大小為512字節(jié),建議選擇為2048甚至4096以支持某些大扇區(qū)的U盤,為0則禁止在.H文件中定義緩沖區(qū)并由應(yīng)用程序在pDISK_BASE_BUF中指定 //#define FILE_DATA_BUF_LEN 1// 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度 // 如果準備使用雙緩沖區(qū)交替讀寫,那么不要定義FILE_DATA_BUF_LEN,而是在參數(shù)中指定緩沖區(qū)起址,用CH375FileReadX代替CH375FileRead,用CH375FileWriteX代替CH375FileWrite #include "CH375HF9.H" #define CH375_INT_WIRE ( IO0PIN & 0x0010000 ) // P0.16, CH375的中斷線INT#引腳,連接CH375的INT#引腳,用于查詢中斷狀態(tài)

#define NO_DEFAULT_CH375_F_ENUM 1 // 未調(diào)用CH375FileEnumer程序故禁止以節(jié)約代碼 #define NO_DEFAULT_CH375_F_QUERY 1 // 未調(diào)用CH375FileQuery程序故禁止以節(jié)約代碼

1)#define LIB_CFG_FILE_IO 1 我想不是這個問題


還有我要是發(fā)的數(shù)據(jù)沒有到達1個扇區(qū)大小 mCmdParam.Locate.mSectorOffset=0xffffffff; CH375FileLocate(); mCmdParam.Write.mSectorCount=1; mCmdParam.WriteX.mDataBuffer =buf; CH375FileWriteX( ); 寫的數(shù)據(jù)是buf大小。還是一個扇區(qū)大小


pCodeStr=(UINT8 *)"suibiandaxiezi"; mCmdParam.Locate.mSectorOffset=0xffffffff; CH375FileLocate(); mCmdParam.Write.mSectorCount=1; mCmdParam.WriteX.mDataBuffer =pCodeStr; CH375FileWriteX( ); i = CH375FileClose( ); /* 關(guān)閉文件 */


...


suibiandaxiezi 6 犮馉? 袖(熷 鈴 袖 鈴 袖 鈴 繡 鈴 戝馉?@- @犪( 犮f?媵熷 犮 鈴R? P犪 闛?? 匿 E?P U泫


能寫入了。但是FILE_DATA_BUF_LEN 沒解決


你指的那個例子是EXAM 幾??? 我現(xiàn)在 #define FILE_DATA_BUF_LEN 1 可以編譯通過


void xWriteToExtBuf( UINT8 mLength ) /* 該子程序由CH375的子程序庫調(diào)用,用于從CH375讀取文件數(shù)據(jù)到外部緩沖區(qū),被CH375FileReadX調(diào)用 */ { /* if ( (UINT32)current_buffer + mLength >= (UINT32)&FILE_DATA_BUF + sizeof( FILE_DATA_BUF ) ) return;*/ /* 防止緩沖區(qū)溢出 */ if ( mLength ) { do { /* 根據(jù)長度讀取數(shù)據(jù),實際上長度總是CH375_MAX_DATA_LEN,也就是64 */ *current_buffer = xReadCH375Data( ); /* 讀出數(shù)據(jù)并保存,可以用這種方式將文件數(shù)據(jù)保存到單片機的各種串行存儲器中 */ current_buffer ++; } while ( -- mLength ); } /* 復(fù)制上述數(shù)據(jù)的總時間不得超過2mS */ else { /* 重試,恢復(fù)緩沖區(qū)起址,如果將文件數(shù)據(jù)讀寫的緩沖區(qū)的當前指針放在mCmdParam.ReadX.mDataBuffer中則會被自動恢復(fù),無需下面的兩行程序 */ current_buffer += (UINT32)mCmdParam.ReadX.mDataBuffer; /* mDataBuffer中為負值 */ mCmdParam.ReadX.mDataBuffer = 0; /* 為了支持重試,在調(diào)用CH375FileReadX之前也應(yīng)該清0 */ } } #ifdef EN_DISK_WRITE void xReadFromExtBuf( UINT8 mLength ) /* 該子程序由CH375的子程序庫調(diào)用,用于從外部緩沖區(qū)讀取文件數(shù)據(jù)到CH375,被CH375FileWriteX調(diào)用 */ { if ( mLength ) { do { /* 根據(jù)長度寫入數(shù)據(jù),實際上長度總是CH375_MAX_DATA_LEN,也就是64 */ xWriteCH375Data( *current_buffer ); /* 將數(shù)據(jù)寫入,可以用這種方式從單片機的各種串行存儲器中取出文件數(shù)據(jù) */ current_buffer ++; } while ( -- mLength ); } /* 復(fù)制上述數(shù)據(jù)的總時間不得超過2mS */ else { /* 重試,恢復(fù)緩沖區(qū)起址,如果將文件數(shù)據(jù)讀寫的緩沖區(qū)的當前指針放在mCmdParam.WriteX.mDataBuffer中則會被自動恢復(fù),無需下面的兩行程序 */ current_buffer += (UINT32)mCmdParam.WriteX.mDataBuffer; /* mDataBuffer中為負值 */ mCmdParam.WriteX.mDataBuffer = 0; /* 為了支持重試,在調(diào)用CH375FileWriteX之前也應(yīng)該清0 */ } } #endif #endif #else /* LIB_CFG_FILE_IO != 0,文件讀寫的數(shù)據(jù)的復(fù)制方式不是"外部子程序" */ #ifdef FILE_DATA_BUF_LEN void xWriteToExtBuf( UINT8 mLength ) /* 不會調(diào)用該子程序 */ { mLength --; /* 該操作無意義,只是避免出現(xiàn)警告信息 */ } #ifdef EN_DISK_WRITE void xReadFromExtBuf( UINT8 mLength ) /* 不會調(diào)用該子程序 */ { mLength --; /* 該操作無意義,只是避免出現(xiàn)警告信息 */ } #endif


以上這段程序?qū)嵲谑遣荒芾斫? FILE_DATA_BUF_LEN 沒有define 和void xReadFromExtBuf( UINT8 mLength ); void xWriteToExtBuf( UINT8 mLength );有什么關(guān)系?。?!


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

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