Board logo

标题: 如何直接用地址值读取分页里的数据 [打印本页]

作者: yindahu    时间: 2009-9-27 19:01     标题: 如何直接用地址值读取分页里的数据

各位大大,比如我想读取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

这是怎么回事儿呢?
作者: yindahu    时间: 2009-9-27 19:03

INT16U 就是unsigned int
作者: finewind    时间: 2009-9-28 10:48

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;
作者: daixiaoke    时间: 2009-10-9 20:37

0xF88000应该是个分页地址,定义变量时只能将变量@到一个全局地址或局部地址中的未分页部分,将地址转换为指针并取地址中的内容时也只能转换全局地址吧,建议将程序中的0xF88000都替换为其对应的全局地址试试
作者: navy_real    时间: 2009-10-15 18:29

INT16U 就是unsigned int
yindahu 发表于 2009-9-27 19:03
fffffffffffffffffffffffffffffffff
作者: navy_real    时间: 2009-10-15 18:30

ggggggggggg
作者: navy_real    时间: 2009-10-15 18:31

4# daixiaoke fdsfsdfsdfsd回复
作者: navy_real    时间: 2009-10-15 18:32

是克服了解释道克里夫 的收费的舒服 打点滴




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0