ATmega32下DISK_BASE_BUF的問題請教

在AVR庫下的頭文件中對DISK_BASE_BUF做了如下定義:UINT8 DISK_BASE_BUF[512]; 我想問的是對于沒有外擴(kuò)RAM的ATmega32(只用其片內(nèi)的2KRAM)這樣一句定義會(huì)將這個(gè)緩沖區(qū)定義在這2K的什么地址上呢?是做一個(gè)隨機(jī)分配嗎?如果不是的話是不是我應(yīng)當(dāng)給DISK_BASE_BUF指定一個(gè)起始地址呢?對于file_data_buf有一樣的疑問!請指點(diǎn)迷津,謝謝!! 

應(yīng)該是隨即分配的,實(shí)際上你也可以把RAM定義在固定的地址的


我在庫的頭文件中做了如下改動(dòng):

CMD_PARAM_I mCmdParam; /* 命令參數(shù) */

//UINT8 DISK_BASE_BUF[512]; /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度為一個(gè)扇區(qū)的長度,起始地址建議為偶地址 */ //#ifdef FILE_DATA_BUF_LEN //UINT8 FILE_DATA_BUF[ FILE_DATA_BUF_LEN ]; /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度,起始地址建議為偶地址 */

#ifdef DISK_BASE_BUF_ADDR UINT8 DISK_BASE_BUF[512] _at_ DISK_BASE_BUF_ADDR; /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度為一個(gè)扇區(qū)的長度 */ #else UINT8 DISK_BASE_BUF[512]; /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度為一個(gè)扇區(qū)的長度 */ #endif #ifdef FILE_DATA_BUF_LEN #ifdef FILE_DATA_BUF_ADDR UINT8 FILE_DATA_BUF[ FILE_DATA_BUF_LEN ] _at_ FILE_DATA_BUF_ADDR; /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度 */ #else UINT8 FILE_DATA_BUF[ FILE_DATA_BUF_LEN ]; /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度 */

主程序中:

#define DISK_BASE_BUF_ADDR 0x0100

#define FILE_DATA_BUF_LEN 0x0200 #define FILE_DATA_BUF_ADDR 0x0300

hcn大哥看這樣總可以了吧? 另外多謝大哥這幾天的指點(diǎn),麻煩您了!!


我在庫的頭文件中做了如下改動(dòng):

CMD_PARAM_I mCmdParam; /* 命令參數(shù) */

//UINT8 DISK_BASE_BUF[512]; /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度為一個(gè)扇區(qū)的長度,起始地址建議為偶地址 */ //#ifdef FILE_DATA_BUF_LEN //UINT8 FILE_DATA_BUF[ FILE_DATA_BUF_LEN ]; /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度,起始地址建議為偶地址 */

#ifdef DISK_BASE_BUF_ADDR UINT8 DISK_BASE_BUF[512] _at_ DISK_BASE_BUF_ADDR; /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度為一個(gè)扇區(qū)的長度 */ #else UINT8 DISK_BASE_BUF[512]; /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度為一個(gè)扇區(qū)的長度 */ #endif #ifdef FILE_DATA_BUF_LEN #ifdef FILE_DATA_BUF_ADDR UINT8 FILE_DATA_BUF[ FILE_DATA_BUF_LEN ] _at_ FILE_DATA_BUF_ADDR; /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度 */ #else UINT8 FILE_DATA_BUF[ FILE_DATA_BUF_LEN ]; /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度 */

主程序中:

#define DISK_BASE_BUF_ADDR 0x0100

#define FILE_DATA_BUF_LEN 0x0200 #define FILE_DATA_BUF_ADDR 0x0300

hcn大哥看這樣總可以了吧? 另外多謝大哥這幾天的指點(diǎn),麻煩您了??!


你的這個(gè)定義不正確,要定義地址的話,實(shí)際上你可以用ICC編譯器自動(dòng)生成這個(gè)地址,按照你說的這樣定義的話,你編譯的時(shí)候有可能會(huì)出錯(cuò)


為什么會(huì)出錯(cuò)啊?我這種定義是參照C51庫的頭文件來的,而且編譯的時(shí)候也沒有報(bào)錯(cuò)???用ICC編譯器自動(dòng)生成我還不知道怎么做,現(xiàn)在就去查一下?。?/p>


AVR的地址定義和51的是不一樣的


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

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