打印

我可以直接操作地址来给寄存器写值吗

[复制链接]
927|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chrise23|  楼主 | 2016-9-11 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
MTCN2013| | 2016-9-11 19:53 | 只看该作者
一般我们说的都是操作寄存器就是底层的了,至于操作地址,那是编译器做的事情。

使用特权

评论回复
板凳
叶覃| | 2016-9-11 23:07 | 只看该作者
采用分散加载的方式可行。在.scat文件中单独开辟一段区域。

使用特权

评论回复
地板
huafei123| | 2016-9-12 10:44 | 只看该作者
操作底层地址,其实就是操作寄存器,每个寄存器对应一个底层地址的。

使用特权

评论回复
5
mdk55555| | 2016-9-12 16:40 | 只看该作者
你可以仔细看看底层的库,用# define的形式,每个寄存器对应一个底层地址的。为了方便用户调用,直接操作寄存器就可以了。

使用特权

评论回复
6
haokeer| | 2016-9-13 22:08 | 只看该作者
可以的,直接赋值1 = uint32_t (0x000000xx)就可以了

使用特权

评论回复
7
xiaolong12| | 2016-9-16 15:31 | 只看该作者
SRAM中就是直接操作底层的地址的,另外外带也是。但是这样直接操作很不直观的。

使用特权

评论回复
8
喵喵小星人| | 2016-9-16 17:26 | 只看该作者
本人刚写的1602驱动就用到了位操作
直接把内存0x20000208的0到3的四个位赋值给PB口ODR寄存器的12到15位
PB口ODR寄存器地址是0x40010c0c。

使用特权

评论回复
9
maninman1981| | 2016-9-17 11:47 | 只看该作者
这样操作少了很多乱七八糟的东西

使用特权

评论回复
10
yysforever| | 2016-9-18 14:12 | 只看该作者
ldr r4, = 0x22004100
    ldmia r4!, {r0-r3}

    ldr r5, = 0x422181b0
    stmia r5!, {r0-r3}

这个就可以操作了

使用特权

评论回复
11
冰是睡着的冰| | 2016-9-18 16:08 | 只看该作者
yysforever 发表于 2016-9-18 14:12
ldr r4, = 0x22004100
    ldmia r4!, {r0-r3}

楼上写的,不是本人,绝对看不懂是什么意思,太乱了。

使用特权

评论回复
12
chrise23|  楼主 | 2016-10-16 15:18 | 只看该作者
yysforever 发表于 2016-9-18 14:12
ldr r4, = 0x22004100
    ldmia r4!, {r0-r3}

好像这就是操作底层的一个地址。0x422181b0就是底层的地址。

使用特权

评论回复
13
chrise23|  楼主 | 2016-10-16 16:21 | 只看该作者
MTCN2013 发表于 2016-9-11 19:53
一般我们说的都是操作寄存器就是底层的了,至于操作地址,那是编译器做的事情。 ...

但是寄存器其实也是对应的也是底层地址的。编译器决定的是地址的分配吧。

使用特权

评论回复
14
chrise23|  楼主 | 2016-10-16 16:21 | 只看该作者
叶覃 发表于 2016-9-11 23:07
采用分散加载的方式可行。在.scat文件中单独开辟一段区域。

这个没有研究过,完了查资料看看,这个分散加载是什么意思呢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

153

帖子

1

粉丝