个人总结的STM32 flash读写

本文详细介绍了如何在STM32上使用Flash模拟EEPROM,包括操作流程、Flash存储器结构以及相关寄存器。通过示例代码展示了如何进行Flash的读写、擦除操作,并提供了完整的读写函数实现。
摘要由CSDN通过智能技术生成

#include “sys.h”
#include “usart.h”
#include “delay.h”
#include “flash.h”

/**********************************************************
FLASH 模拟EEPROM
其实这部分应该最早 学习32 的时候就应该 讲解到。
通过 操作 主存储区 的flash 空间来存放数据
读取数据
本实验使用的 芯片 是 stm32f103zet6
一页是 2K的字节空间
flash = 512KB

操作流程
1 FLASH解锁
2 清除FLASH 标志位
3 擦除FLASH 先擦除在写入
4 写入FLASH
5 锁定FLASH


STM32 的闪存模块由 主存储器---- 信息块 ---- 闪存存储器
接口寄存器3 部分组成。
主存储器:
用来存放代码和数据常数如 const 类型数据 大容量
产品分为 256 页每页 2KB 注意
小容量和中容量 每页只有1KB
主存储器的起始地址从 0x08000000
B0 B1 接地的时候就是从 0x08000000开始
信息块:
分2 小部分 启动程序代码用来存储ST自带的启动程序
用于出口下载代码 当 B0接3.3V B1 接GND 的时候
运行的就是这部分代码
用户选择字节一般用于配置写保护读保护功能
闪存储器接口寄存器:
用于控制闪存读/写 是整个闪存模块的 控制机构

对主存储器和信息块的写入由内嵌的闪存编程 / 擦除控制器 FPEC 管理
编程与擦除的高压由内部产生. 在执行闪存的写操作时任何闪存 的读
操作都会锁住总线 。在写操作完成后才能正确地进行 ;
即在进行写操作或擦除操作时 不能进行代码或数据的读取操作 。

内置闪存模块可以通过地址空间直接寻址
如何32位数据的读操作都能访问闪存模块的内容
并得到相应数据。
读接口在闪存端包含一个读控制器
一个AHB 接口与CPU 衔接。

这个接口的重要工作是产生读闪存的控制信号并
预取CPU 要求的指令块
预去指令块仅用于在I-Code 总线上的取指操作
数据常量是通过D - Code
总线访问
这两条总线的访问目标是相同的闪存模块
访问D-CODE 将比预取指令优先级高

1 在官网上提供了页擦除函数
所以还需要知道页的大小
2 页 地址
0 0x0800 0000 - 0x0800 07ff
1 0x0800 0800 - 0x0800 0fff
2 0x0800 1000 0x0801 17ff
3 0x0800 1800 0x0801 ffff
4 0x0802 0000 0x0802 07ff //2048 字节
3 2048 个字节也就是我们存放数据的空间
4 FLASH 的寄存器配置在 STM32F10xx 闪存编程手册

*********************************************************/

#define key0 PCin(13)
#define key1 PAin(0)

void static led_init()
{
RCC->APB2ENR |=1<<7; //开启F 的时钟
RCC->APB2ENR |=1<<5; //开启D 的时钟

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值