STM32F103处理器内部存储器

◇◆丶佛笑我妖孽 提交于 2020-02-24 23:02:10

STM32F103处理器内部存储器结构及映射

   STM32F103存储器映像为预定义形式,严格规定了哪个位置使用哪条总线。
   STM32F103的程序存储器、数据存储器、寄存器和IO端口被组织到一个4GB的线性地址空间。数据字节以小端模式存放在存储器中。地址空间分8块,每块512MB。
注: 小端模式:与大端模式相对应,将数据的低字节保存在内存的低地址中,高字节保存在高地址中。
其中:
    代码区:(0x00000000 ~ 0x1FFFFFFF,512MB)
    主要包括启动空间(0x00000000 ~ 0x07FFFFFF,128MB)
              Flash(0x08000000 ~ 0x08xxxxxx,16KB~1MB)
              系统存储区(0x1FFFF000 ~ 0x1FFFF800,2KB)
   Flash:用于存放用户编写的程序
   系统存储区:存放串口下载程序,当系统上电后,根据用户设定的启动配置,将Flash或系统存储区映射到启动空间,执行用户程序或串口下载程序。
   内部SRAM(0x20000000 ~ 0x200xxxxx,6~96KB):保护程序运行时产生的临时数据的随机存储器。
   外设区:外设寄存器地址空间,用于调试组件等私有外设。例如:FPB,DWT,ITM,ETM,TPIU,ROM表等。

启动配置

   STM32F103系列单片机因为固定的存储器映像,代码区时钟从地址最初开始(0x0000000),通过ICode和DCode总线访问。启动之后,CPU从最初地址开始获取堆栈顶的地址,并从启动存储器0x00000004指示的地址开始执行。而SARM始终从0x20000000开始,直接通过系统总线访问。
   由于单片机CPU始终从ICode总线获取复位向量,因此启动只能从代码区开始,常用的启动方法是使用Flash启动(程序代码常存放于Flash上面)。
   但是STM32F103实现了特殊的机制,系统可以从三个地方进行启动:Flash、系统存储区、内置SRAM
   当系统复位后,SYSCLK发出的第四个上升沿,BOOT0、BOOT1的状态进行锁存。

启动模式 选择引脚 启动模式 说明
BOOT1 BOOT0 × ×
X 0 主闪存存储器 Flash被选为启动区域
0 1 系统存储器 系统存储区被选为启动区域
1 1 内置SRAM 内置SRAM被选为启动区域
启动方式

   Flash启动:Flash中存放着用户代码,将Flash映射到启动空间(0x00000000),启动后单片机将执行用户程序,但仍然能在用户程序原有的地址(0x08000000)进行访问。
   系统存储器启动:系统存储器在芯片出厂的时候存放着串口下载程序,这种启动方式可以将系统存储器映射到启动空间(0x00000000),启动后单片机将会执行串口下载程序即通过串口将程序下载到Flash中。程序下载完成后在配置为从Flash启动。
   内置SRAM启动内置SRAM一般存放程序运行时产生的临时数据,没有程序,只能在0x20000000开始的地址区访问SRAM。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!