OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3399|回复: 2

请问哪条指令可以向RAM指定位置读写数据?

[复制链接]

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
金钱
2775
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-12-15 14:10:36 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 yuzeyuan1 于 2017-12-15 14:11 编辑

我们以前有一个培训文档,是有经验的老员工写的。里面有这个东西:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////开始
—at()的作用
在keil里面,有一个特殊地址定位的指令,就是将一个变量或常量定位到一个指定的地址上面。下面是volatile 变量的几个例子:

指令为 __at,使用方法如下:
int  gucTmp __at(0x8000) = 100;

意为将gucTmp变量定位到0x8000这个地址并初始化为100。

指令的目的是告诉链接器将指定地址定位到某个地址里面,在使用该功能的时候需要注意一点的是,地址的范围需要符合单片机的内存地址映射空间。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////结束
然而我现在想向一个RAM地址里写东西,再读出来,做一个测试。发现这指令用不了。请问STM32里有读写指定RAM地址的指令吗?
还有个问题就是,使用的是STM32F103Zet6精英板.RAM地址是否就是从0x20000000开始的0x10000个长度?

最佳答案

查看完整内容[请看2#楼]

读写ram的指定位置数据??直接定义一个指针指向ram的指定地址不就行了!然后直接操作这个指针,数组的话定义一个数组然后用__attribute__((at(你要放的地址)))定义一下就行了。具体去参考开发板例程的内存管理试验!
自在随心
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-12-15 14:10:37 | 显示全部楼层
读写ram的指定位置数据??直接定义一个指针指向ram的指定地址不就行了!然后直接操作这个指针,数组的话定义一个数组然后用__attribute__((at(你要放的地址)))定义一下就行了。具体去参考开发板例程的内存管理试验!
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
金钱
2775
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2017-12-15 14:33:45 | 显示全部楼层
看网上说 好像是u8 AAA __attribute__((at(0X20002000))) = 101;我没有调试器,没法知道对不对。
那我再定义一个u8 test,想让它直接指定这个地址,怎么弄呢?
test = __attribute__((at(0X20002000)));  不对
test = at(0X20002000);   也不对
自在随心
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 22:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表