OpenEdv-开源电子网

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

关于寄存器地址的疑问

[复制链接]

31

主题

1954

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4510
金钱
4510
注册时间
2018-5-11
在线时间
944 小时
发表于 2018-6-28 13:46:29 | 显示全部楼层 |阅读模式
1金钱
看寄存器的描述都有一项叫做地址偏移量,比如独立看门狗的重载寄存器,地址偏移量为08H,而翻看存储器映射,独立看门狗的地址空间为40003000-400033FF,是不是意味着这个重载寄存器的物理地址是40003000+08H=40003008呢?这个对于编程者来说,没有任何意义吧,除非直接用汇编。我们都是用寄存器的名称来访问的,即使用汇编,也是早已有人定义了这些地址宏的吧?另外有个疑问,为独立看门狗分配了1K的地址空间,而它只有区区4个寄存器,是不是太大材小用了?

最佳答案

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

1.当然有意义。总有人需要计算寄存器地址。有些人是写汇编的,有些人要做位带操作需要计算位膨胀地址。而且作为数据手册,写这些才正常。 2.地址空间那么大,为一个独立功能模块分配1K地址,没什么大材小用的,不用也浪费。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-6-28 13:46:30 | 显示全部楼层
1.当然有意义。总有人需要计算寄存器地址。有些人是写汇编的,有些人要做位带操作需要计算位膨胀地址。而且作为数据手册,写这些才正常。 2.地址空间那么大,为一个独立功能模块分配1K地址,没什么大材小用的,不用也浪费。
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2018-6-28 15:07:35 | 显示全部楼层
地址理解的对的,但是不能说它对于编程者没有意义,有些地方就需要自己定义指针指向这些地址,比如读取96为的ID,而且如果你用汇编的话这些地址都需要你自己手动load到寄存器里面的。这就是用MDK这种IDE学习的缺点,不能了解最基础的运行过程,如果玩过S3C2440开发linux的话就对这些有深入的理解
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-6-28 19:08:58 | 显示全部楼层
寄存器占用的空间是一定的,4个寄存器就只占用了4个寄存器空间,只是寻址的时候为了方便一般都会把地址分配在16进制地址是好看地址的地方,这样汇编的时候不用纠结细节数字。还有一种情况是由硬件决定的,这样就导致地址不可能连续。
回复

使用道具 举报

31

主题

1954

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4510
金钱
4510
注册时间
2018-5-11
在线时间
944 小时
 楼主| 发表于 2018-6-28 19:22:26 | 显示全部楼层
xiatianyun 发表于 2018-6-28 19:08
寄存器占用的空间是一定的,4个寄存器就只占用了4个寄存器空间,只是寻址的时候为了方便一般都会把地址分配 ...

STM32的寄存器都是32位的,所以每个寄存器占用了4个地址空间,
所以同一外设的寄存器地址偏移量都是以+4递增的
4个寄存器占用16个字节,
大致看了一下,基本上每个外设都预留了1K的地址空间,
事实上每种外设的寄存器都不会太多,只须预留256个地址足够了。
另外,我的意思是说,这些细节地址90%的编程员都不会用到,真要用时也得去查,不可能方便记忆的。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

31

主题

1954

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4510
金钱
4510
注册时间
2018-5-11
在线时间
944 小时
 楼主| 发表于 2018-6-29 13:30:09 来自手机 | 显示全部楼层
stm32现有外设的寄存器大约有400多个,包含保留空间的情况下占用地址空间约140多K
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 11:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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