免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3979 | 回复: 8
打印 上一主题 下一主题

菜鸟请问一下:在C语言中,该用什么语句读取/写入已知存储地址的存储单元呢?谢谢!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-14 17:50 |只看该作者 |倒序浏览
小弟刚开始学嵌入式不久,刚才开始动手写一个点亮一个LED的练习程序。在该程序中,
用I/O端口输出电平,书上是用的GPE端口(该端口有16个引脚)的第4个引脚:GPE4,

在从端口读取数据之前,书上说先要将该端口控制寄存器GPECON(该寄存器32位)的第8、9位分别设置成0和1
现在,已知该端口寄存器地址为:0X56000040,我想在当中放入0X000000140。

如果是用汇编语言写,到还好办,用一些寻址方式就可以将这个值放进相应的存储单元了,

但是在C语言中,我该使用什么语句将我想输出的值放入到该寄存器中呢?相反,读取又该
如何操作呢?请各位指点一下吧,谢谢了!!

#define add_GPECON 0x56000040  // add_GPECON的地址是0x56000040

#define read_GPECON  { ?1 }       //请问在该括号中我该用什么语句得到地址为add_GPECON中存储的值呢?

#define write_GPECON  { ?2 }      //请问在该括号中我该用什么语句将一个值写到地址为add_GPECON的存储单元中呢?

谢谢大家了!!

论坛徽章:
0
2 [报告]
发表于 2007-11-15 09:06 |只看该作者
这样就把这个立即数放到地址里了
add_GPECON = 0X000000140;
要是读寄存器这样就可以了:
uisnghed char rgpe;
rgpe = add_GPECON ;
c比汇编写起来更容易

论坛徽章:
0
3 [报告]
发表于 2007-11-15 09:56 |只看该作者
首先感谢楼上的 lris !

按照你上面的写法:
uisnghed char rgpe;
rgpe = add_GPECON ; //在这句中,add_GPECON表示的仅仅是一个地址0x56000040,那这句就应该可以换成 rgpe = 0x56000040 这样吗?
但是我是想要地址0X56000040对应的存储单元里面的内容啊?
我又该如何写呢?

论坛徽章:
0
4 [报告]
发表于 2007-11-15 10:57 |只看该作者
没有说清楚.呵呵,#define add_GPECON 0x56000040  // add_GPECON的地址是0x56000040,arm里这个是在地址映射里做的.单片机你用,#define add_GPECON ((XBYTE)0x56000040).

论坛徽章:
0
5 [报告]
发表于 2007-11-15 11:22 |只看该作者
再次感谢 lris !!

假如我有这样下面的语句:

#defnie add_GPECON 0x54000040    //得到GPECON的地址

......
int value_GPECON;        //定义一个变量保存GPECON对应的存储单元的值

value_GPECON = ?       //得到GPECON对应存储单元的值

请问上面的?该如何写才能得到0X56000040里面的值呢?

谢谢!

论坛徽章:
0
6 [报告]
发表于 2007-11-15 11:26 |只看该作者
你要是用的是arm学习板,就连GPECON的位应该是已经映射好了,你找找定义看看.

论坛徽章:
0
7 [报告]
发表于 2007-11-15 11:31 |只看该作者
char * reg;
reg = add_GPECON ;用指针取址操作

论坛徽章:
0
8 [报告]
发表于 2007-11-15 11:33 |只看该作者
用指针指向0x54000040,然后取值.

论坛徽章:
0
9 [报告]
发表于 2007-11-15 12:13 |只看该作者
哎,对啊,怎么忘了用指针了!

lris , 麻烦你了!!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP