STM32学习笔记(一)之存储器的地址分配

首先我们需要知道存储器地址映射定义:ARM Cortex-M3系列的处理器,采用存储器与I/O设备(外设)统一编址的方式,将部分存储器地址范围用于外设,这种通过存储器地址访问外设的方式,称之为存储器地址映射

对于32位处理器,可寻址范围是2的32次,即4GB寻址范围;ARM将这4G空间从低地址到高地址依次划分为代码区( Code)、 片上SRAM区( SRAM)、片上外设( Peripheral) 、片外RAM( External RAM)、片外外设( External Device)和系统级( System level)

STM32学习笔记(一)之存储器的地址分配_第1张图片

ARM公司只是大概的规定了存储器空间的映射,允许各芯片厂商在指定范围内自行定义和使用这些存储空间,未分配的空间为保留的地址空间。
STM32在ARM规定的基础上,将4G空间分为了Block0、 Block1、 Block2、……、 Block7,共8块,每块大小为512MB;如下表的存储器分配表

STM32学习笔记(一)之存储器的地址分配_第2张图片

 ①0x0000 0000 ~ 0x1FFF FFFF(512MB):作为代码区,用于存放下载的代码。系统上电后,将从该部分读取代码;
②0x2000 0000 ~ 0x3FFF FFFF(512MB):作为SRAM区,用于存放运行代码。系统上电后,将从Flash读取代码,放到SRAM里, CPU再从SRAM读取代码运行;
③0x4000 0000 ~ 0x5FFF FFFF(512MB):作为片上外设区,用于存放厂商外设寄存器。要操作外设,即修改这里对应的外设寄存器;
④0x6000 0000 ~ 0x9FFF FFFF(1GB):作为片外RAM,用于扩展RAM。当SRAM或者Flash不够用时,MCU通过FSMC外接其它IC芯片,则在这个地址范围读写IC芯片数据;
⑤0xA000 0000 ~ 0xDFFF FFFF(1GB):作为片外外设区,用于读写扩展IC芯片的寄存器。 ST只用了这里的一半空间,另外一空间未使用;
⑥0xE000 0000 ~ 0xFFFF FFFF(512MB):作为内核外设区,用于存放Cortex-M3内核的内部外设。 CortexM3内核的内部外设有NVIC、 Systick等;
在Block0、 Block1中,分别对应三个启动模式(启动模式选择是通过BOOT0和BOOT1的引脚电平来决定的)。当从主存储器启动,则是从Flash启动;当从系统存储器启动,则是从System memory启动;当从SARM启动,则是从SRAM启动。默认一般启动方式都是从存储器启动

STM32学习笔记(一)之存储器的地址分配_第3张图片
对于我们开发人员,主要就是对Block2的片上外设的各种寄存器进行读写操作,以控制外设资源工作,实现所需要的功能

 

你可能感兴趣的:(stm32,stm32,学习,单片机)