当前位置: 首页 > news >正文

单片机——FLASH(2)

文章目录

    • flash (stm32f40x 41x的内存映射中区域详解)
    • flash写数据时

flash (stm32f40x 41x的内存映射中区域详解)

Main memory
主存储区
放置代码和常数
System memory
系统存储区
方式bootloader代码
OTP区
一次性可编程区
选项字节
配置读保护,BOR级别,软件/硬件看门狗以及期间处于待机或停止模式下的复位,相当于一些寄存器。
在这里插入图片描述

flash写数据时

flash写数据时,对闪存的任何操作都会锁住总线,这里锁住总线的锁定机制来控制访问点共享资源,有设备要访问资源,会在总线上设置一个锁定的状态,表示正在访问此资源,其他设备访问就会阻塞,直到被释放标志。
所以在进行写操作的时候有必要写禁止数据缓存
flash擦除数据是写1,写入数据的时候是写0

flash闪存的配置和代码建议查看这篇博客,详细清楚:
https://cloud.tencent.com/developer/article/2190978

在代码中。标准库会有禁止数据缓存的标志,即

FLASH_DataCacheCmd(DISABLE);

但是在HAL库中并没有这一步,知识对flash区域上锁,解锁,HAL库函数有对标志位清除这一项,但是数据缓存标志禁止未提及。目前的一种说法是有可能是HAL库的代码优化导致,但是有待考察。手册中也没有提到。

在STM32中是一个32bits地址对应的一个字节,flash是以最小单位字节操作的。
32位(u32)地址是一个地址代表1字节,4个32位地址代表1个32位数
16位(u16)地址是一个地址代表1字节,2个16位地址代表1个16位数

另外,在控制寄存器FLASH_CR的时候,PSIZE的配置
在这里插入图片描述
目前查到的资料是两种说法
一种是:对应的电压只能对应并行位数,例如,电压范围在2.3-3.6v之间的只能是并行位数32
一种是:高电压可以对应并行位数及以下的,例如电压范围在2.3-3.6v之间的可以设置并行位数32,16,8
这里我建议遵循第一种

最后提一下,底层访问通讯总线都要有加锁过程,CPU与内存通讯时,有地址总线,总线的宽带意味着每次通讯读写的字节数。

http://www.lryc.cn/news/299556.html

相关文章:

  • 个体诊所门诊电子处方开单管理系统软件,配方模板病历模板设置一键导入操作教程
  • ELAdmin 配置定时任务
  • 【服务器部署】Docker环境的安装
  • leetcode刷题--贪心算法
  • 《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)
  • Python json解析
  • [FFmpeg学习]从视频中获取图片
  • Redis集中管理Session和系统初始化参数详解
  • [网鼎杯 2020 朱雀组]phpweb
  • 情人节html代码
  • 键盘重映射禁用 CtrlAltDel 键的利弊
  • 【网工】华为设备命令学习(综合实验一)
  • JavaScript中的常见算法
  • 桥接模式:连接抽象与实现的设计艺术
  • C语言——oj刷题——字符串左旋
  • 神经网络(Nature Network)
  • 【Unity】QFramework通用背包系统优化:使用Odin优化编辑器
  • 基本算法--贪心
  • 13. 串口接收模块的项目应用案例
  • Python re找到特定pattern并将此pattern重复n次
  • ChatGpt报错:We ran into an issue while authenticating you解决办法
  • 如何从 iPhone 恢复已删除的视频:简单有效方法
  • 【python量化交易】qteasy使用教程02 - 获取和管理金融数据
  • 数据库学习案例20240206-ORACLE NEW RAC agent and resource关系汇总。
  • TypeScript 入门
  • linux 磁盘相关操作
  • PyTorch: torch.max()函数详解
  • Rust基础拾遗--核心功能
  • MySQL:常用指令
  • Scrapy:Python中强大的网络爬虫框架