从下方的存储器映像可知,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教程