欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > STM32F1学习——Flash闪存

STM32F1学习——Flash闪存

2025/10/1 7:57:06 来源:https://blog.csdn.net/qq_55958175/article/details/145879131  浏览:    关键词:STM32F1学习——Flash闪存

一、Flash闪存

        STM32F1系列的Flash包含程序存储器、系统存储器 和 选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程。

        读写Flash的用途:①利用程序存储器剩余的空间来保存掉电不丢失的用户数据。②通过在程序中编程(IAP),实现程序的自我更新。

        在线编程(In - Circuit Programming -ICP)用于更新程序存储器的全部内容,他通过JTAG、SWD协议或系统加载程序(Bootloader)下载程序。

        在程序中编程(In - Application Programming - IAP)可以使用微控制器支持的任一种通信接口下载程序。

二、Flash闪存模块组织

        这里我们使用STM32F103C8T6的话,主程序存储器只有0-63页即仅有64页即64K。在也擦除的时候可以选择全部擦除和页擦除,页擦除需要知道起始地址。

        这里是Flash的基本结构图,使用FPEC(Flash Program/Erase Controller)外设对Flash进行擦除和编程。程序存储器存储的是一些代码程序,而系统存储器是出厂自带的信息,选项字节用来配置读写保护和其他用户配置。

        FPEC外设共设置了三个键,RDPRT键是解除读保护的键,Key1和Key2需要正确且按顺序输入,否则会锁死FPEC和FLASH_CR。

        加锁就比较简单了,将FLASH_CR中的LOCK位设置为1就可以锁住FPEC和FLASH_CR。

三、读写Flash存储器

        在读Flash的时候并不需要什么权限,因为不涉及到修改寄存器的值,但是在写Flash的时候却要使用KEY1和KEY2同时还需要套用下面的形式。

a、编程过程

① 先查看芯片是否上锁,然后在进行一下操作。但实际上我们只用每次操作都解锁就行。

② 置FLASH_CR的PG = 1表示写入。

③ *( (__IO uint16_t *)(0x08000000) ) = 0x1234; 注意STM32只能以半字16位的形式写入。

③ BSY位 = 1表示还在写,=0表示写完了。

b、闪存页擦除

① 先查看芯片是否上锁,然后在进行一下操作。但实际上我们只用每次操作都解锁就行。

② 置FLASH_CR的PER = 1表示页擦除,在FLASH_AR选择要擦除的页,STRT = 1表示开始擦除。

③ BSY位 = 1表示还在擦除,=0表示擦除完了。

c、闪存全擦除过程

① 先查看芯片是否上锁,然后在进行一下操作。但实际上我们只用每次操作都解锁就行。

② 置FLASH_CR的MER = 1表示全擦除,STRT = 1表示开始擦除。

③ BSY位 = 1表示还在擦除,=0表示擦除完了。

四、选项字节

        可以看到[31 : 24]位 和 [15 : 8]位数据都是[23 : 16]位 和 [7 : 0]位前面代了n,其实就是他们的反码,如果这两个数据不是反码的关系,那么代表数据无效,有错误。 

RDP: 写入RDPRT键(0x 000000 A5)后解除读保护。

USER:配置硬件看门狗和进入停机/待机模式是否产生复位。

Data0/1:用户可自定义使用。

WRP0/1/2/3: 配置写保护,每一个位对应保护4个存储页。(中容量)

a、选项字节的擦除

① 检查FLASH_SR的BSY位,已确定没有其他正在进行的闪存操作。

② 解锁FLASH_CR的OPTWRE位。(解锁选项字节自己的锁)

③ 设置FLASH_CR的OPTER位为1。

④ 设置FLASH_CR的STRT位为1。

⑤ 等待BSY位变为0。

b、选项字节的编程

① 检查FLASH_SR的BSY位,已确定没有其他正在进行的闪存操作。

② 解锁FLASH_CR的OPTWRE位。(解锁选项字节自己的锁)

③ 设置FLASH_CR的OPTPG位为1。

④ 写入要编程的半字到指定的地址。

⑤ 等待BSY位变为0。

参考

[15-1] FLASH闪存_哔哩哔哩_bilibili

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词