野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 29188|回复: 3

STM32F103 4GB线性地址空间

[复制链接]
发表于 2021-7-15 09:07:24 | 显示全部楼层 |阅读模式
大神们好!在STM32F0x中文参考手册2.2章节“存储器组织”中,有这么一句“程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内”,关于这句可以这么理解么:这4GB的地址空间的地址范围是0x00000000到0xFFFFFFFF;十六进制的0xFFFFFFFF-0x00000000+1=2^32,正好是4GB,但STM32的存储器都是32位的,也就是4个Byte是一个完整的存储器;那可以这么理解么,这4GB的地址空间其实共有2^30=1073741824(10亿多)个32位的存储器,而且它的地址是从0x00000000开始,下一地址是0x00000004,再下一个是0x00000008等等,这样每个地址加4,累加上去的,而不是0x00000001,0x00000002等等这么加上去的。可以单独操作0x00000001,0x00000002这些地址的存储器吗?这样有意义吗?有这些地址吗?
回复

使用道具 举报

 楼主| 发表于 2021-7-18 14:50:39 | 显示全部楼层
这个请大神们指点一下
回复 支持 反对

使用道具 举报

发表于 2021-7-19 01:08:06 | 显示全部楼层
本帖最后由 wangyx1919 于 2021-7-19 01:14 编辑

你的理解大体正确,“4个Byte是一个完整的存储器”->“4个Byte是一个最小单位的存储器”更好,但其实说最小单位感觉也不很准确,而这样说:“4个Byte组成一个寄存器。”肯定没错。
至于能不能单独操作0x00000001,0x00000002这些地址的存储器,看具体情况有的可以有的不行。
第一和第二个图,这两个32位寄存器的偏移地址之差就是0x04,和你想的一样。第一和第三个图,GPIO寄存器只能以字(32位)的形式操作,而USART寄存器可以用半字(16位)和字(32位)来操作。
能不能操作另说,但地址肯定是存在的,地址是以字节为单位的。补充:stm32的地址不是从0一个个往上垒,它是分段的,中间有地址空着没用。(你应该也知道)
野火论坛202107190059459436..png
野火论坛202107190100115239..png
野火论坛202107190104209643..png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-27 16:10:50 | 显示全部楼层
哦。理解了,谢谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 14:21 , Processed in 0.028878 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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