c语言指针flash,STM32F103RCT6之FLASH读写操作

一、STM32F103的FLASH简介

1、如图所示,STM32F103内部FLASH存储区分为三个区域:主存储区、信信息块和闪存存储器接口寄存器。

储存储区是我们读写FLASH的主要的存储区,MCU程序以及一些需要掉电保存的数据都是存储在这个区域的。

信息快:程序启动代码被存储在这部分。

最后的寄存器则是FLASH读写需要配置的一些寄存器位置。

a4c26d1e5885305701be709a3d33442f.png

主存储器的起始位置0x08000000,除去程序占用的空间,剩余部分就可以作为数据保存的区域了,所以在利用内部FLASH存储数据的时候,一定不要占用程序本身所占用的空间,否则会导致死机。

主存储器一共256页,每页2K字节长度。

二、FLASH存储寄存器的配置

1、FPEC键寄存器:

在读写FLASH之前必须进行解锁FPEC,通过该寄存器,向该寄存器写入键值。当要操作FLASH时,需要将相应键值KEY1和KEY2写入寄存器中,同理,操作完成后,还要锁定该FLASH。

2、控制寄存器FLASH_CR

LOCK位:解锁或锁住位,解锁后该位清零,写1可锁住。

STRT位:该位写1,进行一次擦除。

PER位:该位写1,进行页擦除

PG位:读写选择位,写数据时该位需要置1,读数据则该位为0.

3、状态寄存器FLASH_SR

第5位EOP位:操作结束标志

第4位WRPRTERR位:写保护错误

第3位:保留

第2位:PGERR:编程错误

第1位BSY位:当FLASH正在被操作时,该位置1,当操作完成或发生错误时,清零。

4、地址寄存器FLASH_AR

选择要操作的FLASH地址,当BSY位为1时,即FLASH正在被操作,则该寄存器不能进行操作。

三、FLASH读写操作流程/1、STM32复位后,FPEC模块是被保护的,不能去操作各个寄存器,因此需要先解锁,向模块中写入

特定的序列到FLASH_KEYR寄存器,才能打开FPEC模块。如图所示。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值