目录
1.0 闪存模块组织
2.0 Flash基本结构
3.0 Flash解锁
4.0 指针访问存储器地址
5.0 程序存储器编程
6.0 选项字节
7.0 选项字节编程
8.0 选项字节擦除
9.0 电子签名
10.0 手册解读
定义:
STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程
读写FLASH的用途:利用程序存储器的剩余空间来保存掉电不丢失的用户数据 通过在程序中编程(IAP),实现程序的自我更新
在线编程(In-Circuit Programming – ICP)用于更新程序存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载程序
在程序中编程(In-Application Programming – IAP)可以使用微控制器支持的任一种通信接口下载程序
1.0 闪存模块组织
2.0 Flash基本结构
3.0 Flash解锁
4.0 指针访问存储器地址
指针访问存储器地址需要解引用:在C语言中解引用表示的就是取值的意思
5.0 程序存储器编程
注:在单片机中有字节,半字,一字的说法,字节表示的是8个bit位,半节表示的是uint16_t,一个字节表示的是uint32_t个字节。
6.0 选项字节
7.0 选项字节编程
检查FLASH_SR的BSY位,以确认没有其他正在进行的编程操作
解锁FLASH_CR的OPTWRE位
设置FLASH_CR的OPTPG位为1
写入要编程的半字到指定的地址
等待BSY位变为0 读出写入的地址并验证数据
8.0 选项字节擦除
检查FLASH_SR的BSY位,以确认没有其他正在进行的闪存操作
解锁FLASH_CR的OPTWRE位
设置FLASH_CR的OPTER位为1
设置FLASH_CR的STRT位为1
等待BSY位变为0 读出被擦除的选择字节并做验证
9.0 电子签名
10.0 手册解读
......