简介STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分通过闪存存储器接口外设可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途利用程序存储器的剩余空间来保存掉电不丢失的用户数据通过在程序中编程IAP实现程序的自我更新在线编程In-Circuit Programming – ICP用于更新程序存储器的全部内容它通过JTAG、SWD协议或系统加载程序Bootloader下载程序在程序中编程In-Application Programming – IAP可以使用微控制器支持的任一种通信接口下载程序闪存非易失性掉电不丢失的存储器。闪存模块组织FLASH基本结构使用FPEC对程序存储器和选项字节的擦除和编程操作Flash需要先解锁。解锁向键寄存器里写入特定的值指针访问存储器stm32内部的存储器是直接挂在总线上的。这时再读取某个存储器就非常简单了。直接使用C语言的指针来访问即可。程序存储器编程操作片内 Flash 写入 16 位半字数据FLASH_CR的PG位FLASH写入功能的开关PG1开启半字编程模式允许向 Flash 地址写入 16 位数据PG0关闭写入仅可读。FLASH_SR的BSY位FLASH的状态寄存器BSY (Busy)1硬件正在执行烧写操作CPU 不能做任何 Flash 操作循环等待BSY0烧写动作硬件完成退出等待。1.解锁2.置FLASH_CR中的PG为1说明我要写入数据3.写入数据自动开启Flash_CR中的STRT为1触发开始条件4.等待BSY5.验证程序存储器页擦除1.解锁操作2.置Flash_CR中的PER位为1告诉他接下来进行页擦除操作3.在FLASH_AR地址寄存器中选择要擦除的页。4.置Flash_CR中的STRT为1触发条件5.等待BSY位6.验证程序存储器全擦除1.解锁操作2.置FALSH_CR中的MER 1;告诉他接下来我要进行全擦除操作3.置FLASH_CR中的STRT位1触发开始条件4.等待BSY位5.验证选项字节RDP写入RDPRT键0x000000A5后解除读保护USER配置硬件看门狗和进入停机/待机模式是否产生复位Data0/1用户可自定义使用WRP0/1/2/3配置写保护每一个位对应保护4个存储页中容量写入X的话要在nX里写入X对应的反码硬件自动执行选项字节编程选项字节的擦除快学完了有点激动。不想写了