STM32内存大小与地址的对应关系以及计算方法

本文讲解了STM32中内存地址与大小之间的计算方法,包括单位换算、地址与字节的关系及具体计算公式,并以STM32F103为例,详细介绍了如何通过地址计算内存大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1、概述

在计算机中要访问存储区,都是通过地址来进行访问的,包括所有的外设(比如串口、内存、硬盘等),都对应有一个访问地址,地址就相当于门牌号,有了门牌号,我们才知道操作的是哪一个区域、哪一个外设。

最被大家熟知的是计算机内存,计算机内存有4G、8G,16G等等,对于程序员而言,要在代码中操作这些内存,肯定得知道内存的地址,此外,还需要会计算 【地址】【内存大小】【计算方法】【对应关系】。STM32作为微型计算机,原理也是一样。

本篇博客则以STM32F103为例,主要对地址的计算相关的问题进行阐述。



2、公式

2.1 G/M/K/Byte/bit 单位换算公式

基本概念1:单位换算公式

1G = 1024M
1M = 1024K
1K = 1024Byte
1Byte = 8bit

2.2 地址与字节大小的关系

基本概念2:在计算机中,一个地址,代表一个字节(1Byte)。
基本概念3:我们常说的8位机、16位机、32位机、64位机,指的是地址的长度。
       即:地址最长可以有几个比特位,例如:8位机地址最长8个比特位,最大地址0xFF。
基本概念3含义详细解释如下:(备注:此处直接阐述结果,后面有详细的计算方法。)

因为计算机只能识别二进制0/1,寻址的时候也一样是通过二进制0101来寻址的,我们常说的32位机、64位机,指的是地址的2进制长度。比如:
 8位机,地址长度是  8个二进制bit,最长0xFF。       地址范围:0x0 - 0xFF,       即:最大可以表示2^8  == 256个地址,即:256个字节
16位机,地址长度是 16个二进制bit,最长0xFFFF。     地址范围:0x0 - 0xFFFF,     即:最大可以表示2^16 == 64k个地址,即:64k个字节
32位机,地址长度是 32个二进制bit,最长0xFFFF FFFF。地址范围:0x0 - 0xFFFF FFFF,即:最大可以表示2^32 == 4G 个地址,即:4G个字节
64位机,地址长度是 64个二进制bit,最长0xFFFF FFFF FFFF FFFF(16个F)。地址范围:0x0 - 0xFFFF FFFF FFFF FFFF(16个F),即:最大可以表示2^64==2GG个地址,即:2GG个字节

比如:地址0x0000 0000就占一个字节,

   地址0x0000 0001也占一个字节,

   地址0x0000 0002也占一个字节,

       …

   地址0x0000 000F也占一个字节,

也就是说:

   0x0000 0000 - 0x0000 000F总共有16个地址,占16个字节。

可以推出公式:

   备注:十六进制1位 = 二进制4位,计算机只能识别二进制:1101 0101这种,所以要换算成二进制计算
{ 0 x 0000 , 000 F = 0 b . . . . , 0000 , 1111 = 2 4 = 16 (个字节) \begin{cases} 0x0000,000F &= \quad 0b....,0000,1111\\ &= \quad 2^4 \\ &= \quad 16(个字节)\\ \end{cases} 0x0000,000F=0b....,0000,1111=24=16(个字节)


所以套用成通用公式表示的话,可以表示为如下几个公式。

2.3 公式1:0xFF…FF (n个F)大小


公式1:地址 0xFF…FF (n个F)的地址大小为:
0 x F F . . . F F M e m o r y S i z e   =   2   ( 4   ∗   n ) \color{red}{ \boldsymbol{ 0xFF...FF \quad MemorySize \, = \, 2^{ \: (4 \, * \, n)} } } 0xFF...FFMemorySize=2(4n)
换句话说,其实就是换算成二进制格式以后,1占多少个bit,大小就为 【 2 b i t 】 \color{blue}【{2^{bit}} 】 2bit字节。因为十六进制1位,等价于二进制4位(如:F == 1111),所以n个F占 【 4 ∗ n 】 \color{blue}{【4 * n 】} 4n位,所以此公式为 【 2 ( 4 ∗ n ) 】 \color{blue}【{2^{(4 * n)}} 】 2(4n)

2.4 公式2:0xmFF…FF (m后跟n个F)大小


公式2:地址 0xmFF…FF (n个F)的地址大小,等价于(m + 1)个0xFF…FF大小之和

0 x m F F . . . F F M e m o r y S i z e = ( m + 1 ) ∗ 2   ( 4   ∗   n ) \color{red}{ \boldsymbol{ 0xmFF...FF \quad MemorySize = (m + 1) * 2^{ \: (4 \, * \, n)}\\ } } 0xmFF...FFMemorySize

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值