CH375FileRead( )讀取扇區(qū)數(shù)問題

你好! (1) 是不是一次調(diào)用CH375FileRead( )函數(shù)只讀取4個(gè)扇區(qū)的字節(jié)!我做過這邊的測(cè)試!你們的這一段代碼如下: if ( CH375vFileSize > FILE_DATA_BUF_LEN ) /* 由于演示板用的62256只有32K字節(jié),其中CH375子程序用512字節(jié),所以只讀取不超過63個(gè)扇區(qū),也就是不超過32256字節(jié) */ { SecCount = FILE_DATA_BUF_LEN / 512; /* 由于演示板用的62256只有32K字節(jié),其中CH375子程序用512字節(jié),所以只讀取不超過63個(gè)扇區(qū),也就是不超過32256字節(jié) */ NewSize = FILE_DATA_BUF_LEN; /* 由于RAM有限所以限制長(zhǎng)度 */ } else /* 如果原文件較小,那么使用原長(zhǎng)度 */ { SecCount = ( CH375vFileSize + 511 ) >> 9; /* (CH375vFileSize+511)/512, 計(jì)算文件的扇區(qū)數(shù),因?yàn)樽x寫是以扇區(qū)為單位的,先加511是為了讀出文件尾部不足1個(gè)扇區(qū)的部分 */ NewSize = (UINT16)CH375vFileSize; /* 原文件的長(zhǎng)度 */ } printf( "Size=%ld, Len=%d, Sec=%d\n", CH375vFileSize, NewSize, (UINT16)SecCount );

mCmdParam.Read.mSectorCount = SecCount; /* 讀取全部數(shù)據(jù),如果超過60個(gè)扇區(qū)則只讀取60個(gè)扇區(qū) */ /* current_buffer = & FILE_DATA_BUF[0]; 如果文件讀寫的數(shù)據(jù)的復(fù)制方式為"外部子程序",那么需要設(shè)置存放數(shù)據(jù)的緩沖區(qū)的起始地址 */ CH375vFileSize += 511; /* 默認(rèn)情況下,以扇區(qū)方式讀取數(shù)據(jù)時(shí),無法讀出文件尾部不足1個(gè)扇區(qū)的部分,所以必須臨時(shí)加大文件長(zhǎng)度以讀取尾部零頭 */ i = CH375FileRead( ); /* 從文件讀取數(shù)據(jù) */ CH375vFileSize -= 511; /* 恢復(fù)原文件長(zhǎng)度 */ mStopIfError( i ); 在這段代碼下我做的輸出函數(shù): printf( "Close\n" ); i = CH375FileClose( ); /* 關(guān)閉文件 */ mStopIfError( i ); for(i=0;i { AT91C_BASE_SYS->DBGU_THR=FILE_DATA_BUF[i]; //發(fā)送數(shù)據(jù) while(2!=(2&AT91C_BASE_SYS->DBGU_CSR)) ; //等待發(fā)送完畢 } 但是發(fā)現(xiàn)最大可以讀取2048個(gè)字節(jié),一旦超過這個(gè)字節(jié)數(shù),就讀不出來了! (2) 還有,假如每調(diào)用一次CH375FileRead( )可以讀取4扇區(qū)字節(jié)的數(shù)字,我的FILE_DATA_BUF_LEN設(shè)置的是0x2000,即16個(gè)扇區(qū)。當(dāng)我第一次調(diào)用CH375FileRead( ),讀出的數(shù)字占據(jù)FILE_DATA_BUF[]的前2048字節(jié)位置,第二次調(diào)用CH375FileRead( )時(shí)(在讀取同一個(gè)文件)讀取的字節(jié)會(huì)自動(dòng)放在FILE_DATA_BUF[]中的第二個(gè)2048字節(jié)位置上,對(duì)吧? (3)當(dāng)每次讀取新的文件時(shí),程序會(huì)將讀取的字節(jié)重新從FILE_DATA_BUF[]的開始重新存放,對(duì)吧?

我用的是ARM,例程是你們的EXAM1


1,一次讀取數(shù)據(jù)的大小一個(gè)是取決于你的FILE_DATA_BUF的大小,另外一個(gè)就是mCmdParam.Read.mSectorCount變量代表的是你一次要取幾個(gè)扇區(qū).實(shí)際讀取數(shù)據(jù)的時(shí)候沒必要這樣做,你可以這樣操作就可以讀取一個(gè)文件 CH375vFileSize+=511; SecCount = 4//2K,FILE_DATA_BUF[2048] while(1){ mCmdParam.Read.mSectorCount = 4; i = CH375FileRead( ); /* 從文件讀取數(shù)據(jù) */ if(mCmdParam.Read.mSectorCount<4)break; } 2,不是放在第2個(gè),還是在第一個(gè) 3,是重新放


謝謝!


還有你文件的大小,如果你的文件小于2K的話肯定讀不出來; for(i=0;i


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

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