诺瓦 灯板flash容量大小计算_Cortex-M3之存储器映射与Flash编程理解

本文详细介绍了STM32的4GB存储器映射,包括Flash、SRAM和FSMC等区域的划分。重点讲解了BLOCK0的细分,如启动存储区、程序存放区域、系统存储区和选项字节区域。此外,还阐述了STM32的Flash编程要点,如内部Flash的使用条件、写入前的解锁操作、页大小以及擦除规则。

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

1:STM32的4GB的存储器映射的包含内容:FLASH,RAM,FSMC,AHB与APB桥(APB1,APB2即片上外设),

注:FSMC(Flexible static memory controller)本质上是一个外设,可以扩展内存,如SRAM,但注意只能扩展静态内存即static,而不能是动态的,如SDRAM

2:如下图,4GB的存储映射被分为了8块,每块512M,

BLOCK0:Flash(Code区),用来存放程序

BLOCK1:SRAM,也可以存放程序用于固件升级

BLOCK2: 片上外设

BLOCK3&BLOCK4&BLCOK5:FSMC外部RAM

BLOCK6:未使用

BLOCK7: Cortex-M3的内核外设

37e2bf59deb49bc57631f339583d3f73.png

存储器映射

9a6c131da43e878e7ef1a3e68627fc33.png

存储器中的Block0区域

3:对BLOCK0进行细分:

3.1:0x0000 0000~0x0007 FFFF:取决于Boot引脚的配置,为FLASH,SRAM,系统存储区进行映射

c4635ff2b662c4eed08fb045d1ca1c27.png

根据管脚的配置,将不同物理地址映射到第0块的0x0000 0000(启动存储区)

3.2: 0x0800 0000~0x0807 FFFF:程序存放区域

3.3:0x1FFF F000~0x1FFF F7FF:系统存储区,也就是System memory,存放厂商烧写好的isp自举程序(Bootloader),我么使用串口进行程序下载时便会用到这段自举程序

3.4:选项字节区域(Option Bytes):用来配置读写保护,BOR级别,软件/硬件看门狗以及器件处于待机或停止模式下的复位,当芯片不小心被锁住之后,可以从RAM里面修改对应的寄存器位


FLASH编程(STM32)

494fcc93d2dd6011a3fd41962ef13bd9.png

1:FLASH必须在内部或者高速时钟下才能使用

2:内部FLASH空间主要存储的是应用程序,为了防止程序出错所对flash的错误操作,芯片复位后会默认对FLASH控制寄存器上锁,所以写入前需要先解锁FLASH_Unlock()

3:主存储器页的大小视芯片型号不同,每个页有1k或2k大小(使用超大容量、中容量或小容量产品,它们主存储器的页数量、页大小均有不同),

4:对flash每次操作之前必须要写擦除数据然后才能写入,而对flash的擦除,不能以字节进行擦除,而是要以页的方式进行擦除,而STM32固件库函数FLASH_ErasePage()参数中只要给定该页里的任何一个地址那么就会将该页进行擦除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值