首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]关于怎样在FLASH中开辟数据区!

[求助]关于怎样在FLASH中开辟数据区!

我想在Flash中定义一段数据区,用来存储一些参数,然后可以通过串口来读写它们,即使掉电之后这些参数还能保存。现在我直接用地址可以了,如直接引用地址0x1AA0,对它读写可以,另外我想能不能把分配地址的任务扔给编译器,比如定义const常数是这样的
#pragma CONST_SEG APP_ROM
const unsigned char SystemConfig[10];
这样编译器就自动给SystemConfig[10]分配一段空间,我引用SystemConfig[10]它时只要引用SystemConfig做首地址就行了,不用关心它具体是什么,但是这样声明是个常数,不能改变,我试着写了一下,变是变了,变的不对,呵呵。我用
#pragma DATA_SEG APP_ROM
unsigned char SystemConfig[10];
说APP_ROM不是读写的区域,当然不是了,我用
#pragma INTO_ROM
unsigned char SystemConfig[10];不好使,不能读写
请问有别的办法吗?还是我上面这些用的不对?
[em06][em06][em06][em27][em27][em27][em28][em28][em28]
请问volatile是什么意思啊,主要用来做什么?可以这样定义数组吗?
谢谢了,呵呵
不用,只写一次#pragma CONST_SEG APP_ROM就行了(APP_ROM是我自己定义的),只不过凡是定义的常数在程序中都要引用一下,不然的话会被编译器优化掉(有的可以,有的不行)
在函数内部直接用unsigned const char定义的常量编译器就把它放到默认的数据区,但是用#pragma的话,#pragma告诉编译器把const的常量放到#pragma定义的区域,比如
#pragma CONST_SEG APP_ROM
const unsigned char SystemConfig[10];
就是把SystemConfig[10]放到APP_ROM中了,你可以看看Manual_Compiler_HC08.pdf这个文档,讲编译器选项的
哦,我也是刚刚知道这些,你可以看看我的帖子,这几天我问的
呵呵,版主终于露头了
返回列表