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

[复制链接]
1280|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 | 显示全部楼层
操作底层地址,其实就是操作寄存器,每个寄存器对应一个底层地址的。
mdk55555 发表于 2016-9-12 16:40 | 显示全部楼层
你可以仔细看看底层的库,用# define的形式,每个寄存器对应一个底层地址的。为了方便用户调用,直接操作寄存器就可以了。
haokeer 发表于 2016-9-13 22:08 | 显示全部楼层
可以的,直接赋值1 = uint32_t (0x000000xx)就可以了
xiaolong12 发表于 2016-9-16 15:31 | 显示全部楼层
SRAM中就是直接操作底层的地址的,另外外带也是。但是这样直接操作很不直观的。
喵喵小星人 发表于 2016-9-16 17:26 | 显示全部楼层
本人刚写的1602驱动就用到了位操作
直接把内存0x20000208的0到3的四个位赋值给PB口ODR寄存器的12到15位
PB口ODR寄存器地址是0x40010c0c。
maninman1981 发表于 2016-9-17 11:47 | 显示全部楼层
这样操作少了很多乱七八糟的东西
yysforever 发表于 2016-9-18 14:12 | 显示全部楼层
ldr r4, = 0x22004100
    ldmia r4!, {r0-r3}

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

这个就可以操作了
冰是睡着的冰 发表于 2016-9-18 16:08 | 显示全部楼层
yysforever 发表于 2016-9-18 14:12
ldr r4, = 0x22004100
    ldmia r4!, {r0-r3}

楼上写的,不是本人,绝对看不懂是什么意思,太乱了。
 楼主| chrise23 发表于 2016-10-16 15:18 | 显示全部楼层
yysforever 发表于 2016-9-18 14:12
ldr r4, = 0x22004100
    ldmia r4!, {r0-r3}

好像这就是操作底层的一个地址。0x422181b0就是底层的地址。
 楼主| chrise23 发表于 2016-10-16 16:21 | 显示全部楼层
MTCN2013 发表于 2016-9-11 19:53
一般我们说的都是操作寄存器就是底层的了,至于操作地址,那是编译器做的事情。 ...

但是寄存器其实也是对应的也是底层地址的。编译器决定的是地址的分配吧。
 楼主| chrise23 发表于 2016-10-16 16:21 | 显示全部楼层
叶覃 发表于 2016-9-11 23:07
采用分散加载的方式可行。在.scat文件中单独开辟一段区域。

这个没有研究过,完了查资料看看,这个分散加载是什么意思呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

153

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部