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


......

相关推荐
小禾苗_3 小时前
51单片机——DS18B20温度传感器
单片机·嵌入式硬件·51单片机
就叫飞六吧5 小时前
51单片机 和 STM32 的烧录方式和通信协议的区别
stm32·嵌入式硬件·51单片机
冰糖雪莲IO5 小时前
【江协STM32】11-2/3 W25Q64简介、软件SPI读写W25Q64
stm32·单片机·嵌入式硬件
飞凌嵌入式6 小时前
飞凌嵌入式i.MX8M Mini核心板已支持Linux6.1
嵌入式硬件·嵌入式·飞凌嵌入式
年轮不改6 小时前
STM32——点亮LED
stm32·单片机·嵌入式硬件
SkyXZ~6 小时前
地瓜机器人RDK Studio使用入门教程
人工智能·嵌入式硬件·物联网·目标检测·ubuntu·机器学习·机器人
不能只会打代码6 小时前
32单片机从入门到精通之安全性与可靠性——防护措施(十八)
单片机·嵌入式硬件·32单片机
最后一个bug6 小时前
linux的大内核锁与顺序锁
linux·服务器·arm开发·单片机·嵌入式硬件
一只搬砖的猹8 小时前
小米vela系统(基于开源nuttx内核)——如何使用信号量进行PV操作
嵌入式硬件·内核·小米·rtos·信号量·线程通信·vela系统
芋头莎莎8 小时前
从零开始上阿里云云平台+创建两个设备通过云产品流转使两个设备互相通信【三】
嵌入式硬件·阿里云