STM32读取内部FLASH

从下方的存储器映像可知,FLASH闪存(ROM,掉电不丢失)包含三个部分,即系统存储器,选项字节,程序存储器FLASH,其中的系统存储是不可更改的,相当于电脑的系统文件。
RAM是掉电丢失的存储器。
在这里插入图片描述
FLASH的操作方式:在这里插入图片描述
上图中的黄色方框内即为FLASH区,其包括三部分,即系统存储器(启动程序代码),主存储器(程序存储器),选项字节(用户选项字节)。红色方框为闪存存储器接口,此接口即为读写FLASH而存在,实际上是SRAM外设,专为读写FLASH而设计。
FLASH的基本单位是页,每页的大小是1k,闪存的容量指的是主存储器的容量,擦除也是按页来擦除的。其遵循以下规则:
1.写入前必须擦除
2.擦除必须以最小单位进行
3.擦除后数据位全变为1
4.数据只能1写0,不能0写1
5.擦除和写入都需等待相应的寄存器空闲
在这里插入图片描述
注意:选项字节存储的数据是为了配置程序存储器中的程序

FPEC的控制;
锁寄存器,用来锁定FLASH不能被写入,解锁需要先写入KEY1=0x45670123
再写入KEY2=0XCDEF89AB,加锁即FLASH_CR的LOCK位写1
读的话直接读,不用解锁,用指针的方式:
uint16_t Data=(__IO uint16_t*)(0x08000000)
其中define _IO volatile
volatile的作用,避免变量被优化,FLASH不能直接写入的原因就是需要解锁在这里插入图片描述
在这里插入图片描述
全擦除和页擦除的区别是页擦除需要知道是哪一页。写入过程如下,只能以半字写入,即16字
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文中图参考江科大STM32教程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值