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

如何直接用地址值读取分页里的数据

如何直接用地址值读取分页里的数据

各位大大,比如我想读取0xF88000地址的数据,我这样写:

const far INT16U data@0xF88000=256;

INT16U test1,test2;
void main(void)
{
  INT16U* far pData;

  pData=&data;
  test1=*pData;  
  test2=*(INT16U* far)0xF88000;

  for(;;);
}

test1读出的数据是256,test2读出的数据是65535

这是怎么回事儿呢?
INT16U 就是unsigned int
const far INT16U data@0xF88000=256;
我把这段代码放到main()里面去,编译都调不通。
我想你是想把数据放到FLASH里面,然后调出来吧,我是这样做的:
1.在prm文件里:
PLACEMENT
   。。。
  。。。
  PAGED_CONST   INTO    PAGE_F8   // 自定义常量地址
   。。。
。。。
END
2. 数据定义
#pragma CONST_SEG __GPAGE_SEG PAGED_CONST
unsigned int data = 256;
#pragma CONST_SEG DEFAULT
3.数据引用
unsigned int * FAR ch;
*ch = data;
0xF88000应该是个分页地址,定义变量时只能将变量@到一个全局地址或局部地址中的未分页部分,将地址转换为指针并取地址中的内容时也只能转换全局地址吧,建议将程序中的0xF88000都替换为其对应的全局地址试试
INT16U 就是unsigned int
yindahu 发表于 2009-9-27 19:03
fffffffffffffffffffffffffffffffff
ggggggggggg
4# daixiaoke fdsfsdfsdfsd回复
是克服了解释道克里夫 的收费的舒服 打点滴
返回列表