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


......

相关推荐
不能跑的代码不是好代码7 小时前
STM32窗口看门狗(WWDG)知识点及标准库使用指南
stm32·单片机·嵌入式硬件
bingquan33337 小时前
在 Ghidra 中分析STM32裸机固件
stm32·单片机·嵌入式硬件
羽获飞7 小时前
从零开始学嵌入式之STM32——11.STM32---USART串行通讯
stm32·单片机·嵌入式硬件
宵时待雨9 小时前
STM32笔记归纳9:定时器
笔记·stm32·单片机·嵌入式硬件
逐步前行9 小时前
STM32_新建工程(寄存器版)
stm32·单片机·嵌入式硬件
bai5459369 小时前
STM32 CubeIDE 通过PWM占空比控制舵机角度
stm32·单片机·嵌入式硬件
简单中的复杂11 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
上海合宙LuatOS12 小时前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
LS_learner12 小时前
Snapd和Apt—Linux 上两种完全不同的软件包管理系统
嵌入式硬件
点灯小铭12 小时前
基于51单片机的双档交流电压表设计与实现
单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业