网站建设文化公司,最好的公文写作网站,煤棚球形网架公司,注册好域名之后怎么做个人网站1 FLASH闪存简介
本节所指STM32内部闪存#xff0c;即下载程序的时候#xff0c;程序存储的地方。#xff08;非易失性#xff09;
STM32F1系列的FLASH包含程序存储器、系统存储器#xff08;bootloader#xff0c;不允许修改#xff09;和选项字节三个部分#xff0…1 FLASH闪存简介
本节所指STM32内部闪存即下载程序的时候程序存储的地方。非易失性
STM32F1系列的FLASH包含程序存储器、系统存储器bootloader不允许修改和选项字节三个部分通过闪存存储器接口外设可以对程序存储器和选项字节进行擦除和编程 类型 起始地址 存储器 用途 ROM 0x0800 0000 程序存储器Flash 存储C语言编译后的程序代码 0x1FFF F000 系统存储器 存储BootLoader用于串口下载 0x1FFF F800 选项字节 存储一些独立于程序代码的配置参数 RAM 0x2000 0000 运行内存SRAM 存储运行过程中的临时变量 0x4000 0000 外设寄存器 存储各个外设的配置参数 0xE000 0000 内核外设寄存器 存储内核各个外设的配置参数
读写FLASH的用途 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 通过在程序中编程IAP实现程序的自我更新
在线编程In-Circuit Programming – ICP用于更新程序存储器的全部内容它通过JTAG、SWD协议或系统加载程序Bootloader下载程序
在程序中编程In-Application Programming – IAP可以使用微控制器支持的任一种通信接口下载程序
1.1 闪存模块组织
主存储器程序存储器
信息块-》启动程序代码Bootloader用于串口下载
信息块-》用户选择字节选项字节存储一些独立参数
闪存存储器接口寄存器普通外设。闪存管理员擦除和编程通过读写这些寄存器来完成。
擦除和写保护都是以页为单位的、写入操作前必须先进行写使能、每个数据位只能由1改写为0不能由0改写为1、写入数据前必须先擦除擦除后所有数据位变为1、擦除必须按最小擦除单元进行、连续写入多字节时最多写入一页的数据超过页尾位置的数据会回到页首覆盖写入、写入操作包括擦除结束后芯片进入忙状态不响应新的读写操作、直接调用读取时序无需使能无需额外操作没有页的限制读取操作结束后不会进入忙状态但不能在忙状态时读取同W25Q64。
页的起始范围0x0800 0000 ~ 0x0800 03FF。起始以0800/0400/0C00/1000结尾 位置 1.2 FLASH基本结构 1.2.1 FLASH解锁
FPEC共有三个键值 RDPRT键 0x000000A5解除读保护 KEY1 0x45670123 KEY2 0xCDEF89AB 使用键更能防止误操作 解锁 复位后FPEC被保护不能写入FLASH_CR即复位后FLASH是锁着的。 在FLASH_KEYR先写入KEY1再写入KEY2解锁 错误的操作序列会在下次复位前锁死FPEC和FLASH_CR
加锁 设置FLASH_CR中的LOCK位锁住FPEC和FLASH_CR
1.2.2 使用指针访问存储器
使用指针读指定地址下的存储器
uint16_t Data *((__IO uint16_t *)(0x08000000));
使用指针写指定地址下的存储器
*((__IO uint16_t *)(0x08000000)) 0x1234;
其中
#define __IO volatile