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


......

相关推荐
雅斯驰15 小时前
AES-128加密+滚动码认证:ATA5702W如何防御中继攻击与信号重放
运维·单片机·嵌入式硬件·物联网·自动化
iCxhust15 小时前
微机原理课程设计大综合---计数器
汇编·单片机·嵌入式硬件·课程设计·微机原理
搁浅小泽17 小时前
PCBA焊点的检测方法
单片机·嵌入式硬件·可靠性工程师
Deitymoon19 小时前
STM32——PWM控制舵机
stm32·单片机·嵌入式硬件
菜鸟的日志20 小时前
【嵌入系统】嵌入式学习笔记(一)
windows·笔记·嵌入式硬件·学习·ubuntu·操作系统
电子科技圈20 小时前
四大“门派”围攻边缘及端侧AI SoC市场“光明顶”
人工智能·嵌入式硬件·mcu·物联网·网络安全·音视频·语音识别
CHINA红旗下20 小时前
串口的使用
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑21 小时前
嵌入式测试学习第2天:欧姆定律 + 功率计算 + 电路单位换算
单片机·嵌入式硬件
BT-BOX21 小时前
Multisim 14.3 安装与汉化指南(附下载链接)
嵌入式硬件·物联网
不断提高1 天前
别再写 while(1) 死循环了,嵌入式开发该换个活法
c语言·嵌入式硬件·嵌入式·状态模式