您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

STM32编程---FlashRAM介绍

STM32微控制器包含Flash和RAM供开发者使用的存储媒介。下面以STM32L011为例进行介绍。

Storage media                          Size(Byte)                           Type

Flash                                          16K                                    NorFlash

RAM                                            2K                                     N/A

Flash用来存储机器代码,常量,初始化值不为0的全局变量,而且程序运行是在Flash中;

RAM:用来存储初始化值为0的全局变量,以及静态变量(模块内部或者函数内部),堆和栈。

STM32微控制器包含的存储单元如下所示:

  • Main memory block:Flash,地址为0x800'0000,RAM,地址为0x2000'0000
  • System storage block:this area is used to store the code about bootloader which is used to upgrade firmware,地址为0x1FFF'0000。
  • OTP area:One Time Programmable area
  • Optional bytes:

如何选择系统从哪个区域运行代码?

系统开机上电或者硬件复位后会根据BOOT pin进行判断,如果BOOT pin为低电平,则系统从Flash中运行代码(地址为:0x800'0000),如果BOOT pin为高电平,则系统从System storage block运行代码(地址为:0x1FFF'0000)。

系统启动文件?

系统的启动文件为Startup_stm32L011XX.s,该文件是汇编语言,用于初始化芯片关键模块,主要包括异常向量表和PC、SP指针。

系统编译之后包含的数据类型?

数据类型:

  • Ro code:机器代码,存放在Flash中
  • Ro data:常量,用const修饰的变量,存放在flash中
  • RW data:全局变量,初始化值不为0,存放在flash中,运行是会拷贝到RAM中,RAM运行速度快,节省修改数据时间
  • ZI data:全局变量,初始化值为0,存放在RAM中
  • ZI stack:栈空间数据,函数内部的局部变量,存放在RAM中
  • ZI heap:堆空间,使用malloc分配,存放在RAM中


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进