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

发布者:紫色小猫最新更新时间:2018-06-07 来源: eefocus关键字:STM32  内存大小  地址  对应关系  计算方法 手机看文章 扫描二维码
随时随地手机看文章

1、概述

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

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

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

2、公式

注意:在计算机中一个地址,代表一个字节(1Byte),比如:地址0x00到0x01的大小为一个字节

计算地址和占用内存大小时,有以下关系: 

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


3、如何通过地址计算内存大小

STM32是32位单片机,其地址范围为:0x0000 0000 ——0xFFFF FFFF

要查找每个外设对应的地址,可以在对应的用户手册的Memory mapping章节,查询各个外设对应的起始地址、结束地址(比如SPI、串口、IIC、Flash等),

例如下图中,可以查询到: 
外设SPI1的地址范围为:0x4001 3000 —— 0x4001 3400 
外设Flash的地址范围为:0x0800 0000 —— 0x0801 FFFF


这里写图片描述


我们在这里以Flash Memory为例,计算一下STM32F103系列单片机的Flash Memory大小。

3.1、上图中可以查到Flash Memory地址范围为:

  • 起始地址:0x0800 0000

  • 结尾地址:0x0801 FFFF

3.2、则Flash Memory最大内存 = 地址差

                                                                      =  结尾地址 - 起始地址 
                                                                      =  0x0001,FFFF

描述描述

计算公式计算公式

0x0001,FFFF可以表示的地址个数0x0001,FFFF可以表示的地址个数

2∗216=2∗65536=131072个地址2∗216=2∗65536=131072个地址

即:FlashMemory内存大小一共是即:FlashMemory内存大小一共是

131072Byte(字节)131072Byte(字节)

换算成K换算成K

131072Byte1024=128K131072Byte1024=128K

故:STM32F103系列单片机最大Flash Memory最大可以达到128K的内存,查询手册,在Description章节,可以看到介绍如下图: 

这里写图片描述


如蓝色阴影部分描述,Flash Memory最大可以达到128K,说明上述计算正确。

3.3、小细节:

上述计算的地址范围为:0x0 0000——0x1 FFFF,大小为128K 
可以平均分为两个部分,每个部分占64K:

地址范围地址范围

大小大小

0x0,0000——0x0,FFFF0x0,0000——0x0,FFFF

64K64K

0x1,0000——0x1,FFFF0x1,0000——0x1,FFFF

64K64K

4、结论:

1、

结论结论

内容内容

结论一结论一

每一个字节对应唯一的一个地址,每一个地址代表一个字节每一个字节对应唯一的一个地址,每一个地址代表一个字节

2、

描述描述

内存范围内存范围

最大内存大小最大内存大小

16位机16位机

0x00,00−0xFF,FF0x00,00−0xFF,FF

216=65536Byte=64K216=65536Byte=64K

32位机32位机

0x0000,0000−0xFFFF,FFFF0x0000,0000−0xFFFF,FFFF

232=4294967296Byte232=4294967296Byte

=4194304K=4194304K

=4096M=4096M

=4G=4G


关键字:STM32  内存大小  地址  对应关系  计算方法 引用地址:STM32内存大小与地址的对应关系以及计算方法

上一篇:跟着原子学习stm32之内存管理
下一篇:stm32 使用malloc申请内存和free释放内存造成的内存碎片测试

推荐阅读最新更新时间:2024-03-16 16:05

stm32 adc dma多通道采样 数据错位 的解决方法
解决方法:不要采用连续转换模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 需要时才实施转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); 转换后取消转换 ADC_SoftwareStartConvCmd(ADC1, DISABLE); 经过测试能够解决stm32 adc dma多通道采样 数据错位
[单片机]
STM32 USB学习笔记2
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library STM32Cube库中提供了一些有关USB的例程,在其工程目录下的Applications目录中,这里打开STM3210E_EVAL目录,可以看到如下例程: 这里选取一个简单的例子CDC_Standalone,为一个USB通信例程,具体实现是一个USB转串口的功能,相当于USB串口线。把示例里面的inc和src目录下的文件拷贝到新建工程中,这里是把跟usb通信相关的文件放到了vcp目录下。文件目录结构如下: 其中B
[单片机]
<font color='red'>STM32</font> USB学习笔记2
STM32学习之旅⑤ SPI控制TFT,从底层到顶层的设计
一、认识其本质 (一)认识SPI SPI是串行外设接口(Serial Peripheral Interface)的缩写,SPI 总线是Motorola公司推出的同步串行接口技术,(关于同步还是异步,主要看通信双方的时钟线是否连在一起)。SPI由四根线完成数据传输,分别是SCK(时钟)、MOSI(主出从入)、MISO(主入从出)和SSEL(片选)。通讯时序图如下(当然很多SPI器件的数据手册都会给出响应的时序图): SPI主要特点有: 可以同时发出和接收串行数据,是一种全双工的通信; 可以当作主机或从机工作 提供频率可编程时钟 发送结束中断标志 写冲突保护 总线竞争保护等 结构简单 传输速度快,通常可以达到几兆到几十兆每秒,
[单片机]
<font color='red'>STM32</font>学习之旅⑤ SPI控制TFT,从底层到顶层的设计
STM32自学笔记——定时器及PWM输出
最基本的定时中断功能 1) TIM3 时钟使能。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能 2) 初始化定时器参数 voidTIM_TimeBaseInit(TIM_TypeDef*TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); 第一个参数是确定是哪个定时器,这个比较容易理解。 第二个参数是定时器初始化参数结构体指针,结构体类型为 TIM_TimeBaseInitTypeDef,下面我们看看这个结构体的定义: typedef struct { uint16_t TIM_P
[单片机]
<font color='red'>STM32</font>自学笔记——定时器及PWM输出
STM32上很多管脚功能可以重新映射
有很多I/O口,也有很多的内置外设,为了节省引出管脚,这些内置外设都是与I/O口共用引出管脚,ST称其为I /O管脚的复用功能,相信这点大家都很清楚,因为基本上所有单片机都是这么做的。但不知有多少人知道,很多复用功能的引出脚可以通过重映射,从不同的I /O管脚引出,即复用功能的引出脚位是可通过程序改变的。 这一功能的直接好处是,PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。 复用功能引出脚的重映射功能所带来的潜在好处是,在你不需要同时使用多个复用功能时,虚拟地增加复用功能的数量。例如,STM32上最多有3个USART接口,当你需要更多UAR
[单片机]
<font color='red'>STM32</font>上很多管脚功能可以重新映射
STM32 ADC 采样频率的确定
(4)16.7 可编程的通道采样时间 ADC 使用若干个ADC_CLK 周期对输入电压采样,采样周期数目可以通过 ADC_SMPR1 和ADC_SMPR2 寄存器中的SMP 位而更改。每个通道可以以 不同的时间采样。 总转换时间如下计算: TCONV = 采样时间+ 12.5 个周期 例如: 当ADCCLK=14MHz 和1.5 周期的采样时间 TCONV = 1.5 + 12.5 = 14 周期 = 1 s SMPx :选择通道x的采样时间 这些位用于独立地选择每个通道的采样时间。在采样周期中通道选择位必须保持不变。 000:1.5周期 100:41.5周期 001:7.5周期 101:55.5周期
[单片机]
STM32 时钟配置方法
一、在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 二、在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法:如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: ①对于1
[单片机]
基于STM32的实时心率检测仪设计
一、开发环境介绍 主控芯片: STM32F103ZET6 代码编程软件: keil5 心率检测模块: PulseSensor WIFI模块: ESP8266 --可选的。直接使用串口有线传输给上位机也可以。 上位机: C++(QT) 设计的。 支持PC机电脑、Android手机显示。 与上位机的传输协议: 支持串口传输、WIFI网络传输两种。 如果是PC就可以直接连接串口传输数据,如果不方便可以直接通过WIFI---TCP协议传输。 二、PulseSensor心率模块介绍 PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。 可以将其佩戴于手指、耳垂、手腕等处,通过杜邦线--导线将引脚连接到单片机,可将采集到
[单片机]
基于<font color='red'>STM32</font>的实时心率检测仪设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved