STM32-Flash存储

目录

[1.0 闪存模块组织](#1.0 闪存模块组织)

[2.0 Flash基本结构](#2.0 Flash基本结构)

[3.0 Flash解锁](#3.0 Flash解锁)

[4.0 指针访问存储器地址](#4.0 指针访问存储器地址)

[5.0 程序存储器编程](#5.0 程序存储器编程)

[6.0 选项字节](#6.0 选项字节)

[7.0 选项字节编程](#7.0 选项字节编程)

[8.0 选项字节擦除](#8.0 选项字节擦除)

[9.0 电子签名](#9.0 电子签名)

[10.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 手册解读


......

相关推荐
#金毛2 小时前
四、STM32 HAL库API完全指南:从功能分类到实战示例
stm32·单片机·嵌入式硬件
百里东风3 小时前
STM32外设AD-定时器触发 + DMA读取模板
stm32·单片机·嵌入式硬件
Deacde_ZY4 小时前
【控制波形如何COPY并无痛使用】
单片机·嵌入式硬件
仰泳之鹅6 小时前
【51单片机中断】
单片机·嵌入式硬件·51单片机
happygrilclh6 小时前
STM32 定时器主从模式配置解析
stm32·单片机·嵌入式硬件
长流小哥9 小时前
STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析
stm32·单片机·嵌入式硬件·keil5
道亦无名9 小时前
STM32控制电机
stm32·单片机·嵌入式硬件
happygrilclh10 小时前
STM32的ADC模块中,**采样时机(Sampling Time)**和**转换时机(Conversion Time),获取数据的时机详解
stm32·单片机·嵌入式硬件
真的想上岸啊10 小时前
学习51单片机02
嵌入式硬件·学习·51单片机
sword devil90011 小时前
STM32F407VET6实战:CRC校验
stm32·单片机·嵌入式硬件