1.简介
FLASH包含程序存储器,系统存储器,选项字节三个部分。通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编写
读写FLASH的用途:
利用程序存储器的剩余空间来保存掉电不丢失的用户数据
通过在程序中编程(IAP),实现程序的自我更新
在线编程(ICP)用于更新程序存储器的全部内容,它通过JTAG(仿真器,比如用stlink),SWD协议或系统加载程序(bootloader)下载程序
在程序中编程(IAP)可以使用微控制器支持的任一种通信接口下载程序
2.
3.FLASH解锁
FPEC共有三个键值:
RDPRT=0x000000A5
KEY1=0x45670123
KEY2=0xCDEF89AB
解锁:
复位后,FPEC被写保护,不能写入FLASH_CR
在FLASH_KEYR先写入KEY1,再写入KEY2,解锁
错误的操作序列会在下次复位前锁死FPEC和FLASH_CR
加锁:
设置FLASH_CR的LOCK位锁住FPEC和FLASH_CR
4.使用指针访问存储器
使用指针读指定地址下的存储器:
uint16_t Data=*((IO uint16_t *)(0x08000000))
使用指针写指定地址下的存储器:
*((IO uint16_t *)(0x08000000))=0x1234
其中_IO 对应 volatile
5.选项字节
RDP:写入RDPRT键(0x000000A5)后解除读保护
USER:配置硬件看门狗和进入停机/待机模式是否产生复位
Data0/1:用户可以自定义使用
WRP0/1/2/3:配置写保护,每一个位对应4个存储页(中容量)