幫忙解析一個(gè)EXAM8里面的定義語句

UINT8 xdata FileDataBuf[0x4000]; /* 文件緩沖區(qū),太小則速度慢 */

這個(gè)是EXAM8里面的定義語句。下面語句用到了FileDataBuf,這應(yīng)該是個(gè)地址,那為什么定義成0x4000呢?

s = CH376SecWrite( FileDataBuf, s, NULL ); /* 以扇區(qū)為單位向文件寫入數(shù)據(jù),寫入緩沖區(qū)中的所有數(shù)據(jù),含最后的零頭 */ 這句是什么意思,是C51單片機(jī)特有的命令嗎? 定義的 FileDataBuf[0x4000] 是坐什么用的? 求解釋啊。


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

當(dāng)我把上面xdata刪掉 進(jìn)行UINT8 FileDataBuf[0x4000]; 定義時(shí), 報(bào)錯(cuò)提示: : warning: #223-D: function "CH376SecWrite" declared implicitly : warning: #167-D: argument of type "UINT8 *" is incompatible with parameter of type "char *restrict"

file_sys.h 我肯定引進(jìn)來了,因?yàn)槠渌瘮?shù)都沒問題。


你用的什么單片機(jī)?FileDataBuf是你要寫的數(shù)據(jù)存放地


上面就是開辟了一個(gè)緩沖區(qū),按照你上面的警告來看是指針類型有問題。


我用的是stm32f103vet的單片機(jī),512kB Flash, 64KB RAM,請問應(yīng)該怎么設(shè)置FileDataBuf[0x4000], 這個(gè)數(shù)據(jù)存放地一般都是放在flash的嗎?


你可以放在外部RAM中,把FileDataBuf[0x4000]放在外部RAM或者你的RAM中


uint8_t buf[64]; uint16_t total; /* 記錄當(dāng)前緩沖在FILE_DATA_BUF中的數(shù)據(jù)長度 */ uint32_t NewSize; /* 臨時(shí)變量 */ uint8_t FileDataBuf[0x4000]; /* 文件緩沖區(qū),太小則速度慢 */

total += sprintf( FileDataBuf + total, "在本次添加數(shù)據(jù)之前,該文件已有數(shù)據(jù)的長度是 %ld 字節(jié)\xd\xa", NewSize ); /* 將新數(shù)據(jù)添加到緩沖區(qū)的尾部,累計(jì)緩沖區(qū)內(nèi)的數(shù)據(jù)長度 */

warning: #167-D: argument of type "UINT8 *" is incompatible with parameter of type "char *restrict" 這個(gè)報(bào)錯(cuò)到底是怎么回事啊,急啊...


定義的數(shù)據(jù)類型不匹配,這個(gè)需要根據(jù)你單片機(jī)的特性,還有編譯器修改,具體我不清楚??偟膩碚f你只需要把FileDataBuf[0x4000]放到你的RAM中,不能放到FLASH


看下這個(gè)函數(shù)"sprintf"原型的申明。是指針類型有問題,這樣修改下看是否可以: sprintf( (char *restrict)&FileDataBuf + total, "在本次添加數(shù)據(jù)之前,該文件已有數(shù)據(jù)的長度是 %ld 字節(jié)\xd\xa", NewSize ); /* 將新數(shù)據(jù)添加到緩沖區(qū)的尾部,累計(jì)緩沖區(qū)內(nèi)的數(shù)據(jù)長度 */

KEIL對指針類型的判斷比較嚴(yán)格,所以對于不同的數(shù)組類型都會(huì)提示警告。


多謝了, 最后一句話幫到我了,KEIL對指針類型的判斷比較嚴(yán)格,所以對于不同的數(shù)組類型都會(huì)提示警告。 之前,鏈接時(shí)無法通過,我以為是編譯的警告造成的,最后發(fā)現(xiàn)令有原因,所以這幾個(gè)警告應(yīng)該不會(huì)影響,正如大神說的最后一句話。 你上面的修改內(nèi)容 我試了,貌似還是有警告。


如果還有警告應(yīng)該不會(huì)影響到使用,或者你換一個(gè)函數(shù)使用。這樣應(yīng)該就可以了。


確實(shí)不影響使用,那就不換了,因?yàn)橐膊恢琅c之類似的其他函數(shù)了。多謝了。


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

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