STM32的内存映射机制详解

news2024/11/15 14:06:10

目录

前言

一、基本概念

二、内存映射的组成

三、典型布局

四、常用映射


前言

刚开始学习STM32的同学可能只知道按案例配置RAM、Flash的起始地址和容量,但是这个地址是怎么来的,可能并不清楚,接下来让我来给大家介绍一下STM32的内存映射机制

STM32的内存映射机制是一种将不同的内存区域(包括Flash、SRAM、外设寄存器等)按逻辑功能映射到单片机的线性地址空间中的方法。这种机制使得用户可以通过访问特定的地址来操作存储单元或外设寄存器,从而实现对STM32单片机内部资源的直接控制。

一、基本概念

  • 内存映射:将芯片理论上的地址空间分配给存储器或外设寄存器,使它们具有唯一的地址标识。这一过程类似于给每个房间分配一个门牌号,以便能够准确地找到并访问它们。
  • 线性地址空间:STM32单片机的地址空间是线性的,即地址是连续编号的,从0x00000000开始,一直到某个最大值(取决于单片机的具体型号和配置,最大可达4GB)。

二、内存映射的组成

STM32单片机的内存映射可以分为两大部分:系统存储器映射区域外设寄存器映射区域

  • 系统存储器映射区域:主要包括SRAM(用于存放数据,如全局变量、堆栈等)和Flash(用于存储程序代码)。这些区域在单片机的地址空间中占据固定的位置,用户可以通过访问这些地址来读写数据或执行代码。
  • 外设寄存器映射区域:映射了各外设控制需要的寄存器。这些寄存器是外设与单片机之间通信的桥梁,通过访问这些寄存器可以配置外设的工作模式或获取其工作状态。STM32将外设寄存器按照所在的总线(如APB1、APB2、AHB等)进行分组,每个组内的寄存器地址是连续的。

三、典型布局

以STM32F429系列为例,其典型的存储器映射布局如下:

  • Flash memory:0x08000000 ~ 0x080FFFFF(1MB),存储程序代码。
  • SRAM:0x20000000 ~ 0x2003FFFF(256KB),用于存储运行时的数据。
  • APB1外设:0x40000000 ~ 0x4000FFFF,包含连接在APB1总线上的外设,如TIMER2、UART2等。
  • APB2外设:0x40010000 ~ 0x400FFFFF,包含连接在APB2总线上的外设,如TIMER1、SPI1等。

四、常用映射

FMC 总共管理 1.5GB 空间,拥有 6 个存储块(Bank)

从FMC的角度,外部器件比划分为固定大小的存储区域,每个存储取得大小为256MB

  • 区域1可连接多达4个NOR Flash或PSRAM器件,此区域被划分为NOR/PSRAM1~4共4个子区域,带4个专用片选信号
  • 区域2和3用于连接NAND Flash器件,此空间的MU存储器特性必须通过软件重新配置到寄存器中
  • 区域5和6用于连接SDRAM器件(每个存储区域一个器件)

我们给板子加了SDRAM或者NANDFLASH这种FMC接口扩展的芯片,怎么知道它们的映射的起始地址呢。下图是STM32F429的FMC映射图,可以看到sdram的存储块属于BANK5和BANK6,起始地址分别为0XC0000000和0XD0000000,而nandfalsh的存储块属于bank2和bank3,起始地址分别为0X70000000和0X80000000。

注意,有的同学好奇为什么0X80000000作为存储代码的起始地址,又作为nandflash的起始地址,又作为nandflash的起始地址,这不冲突吗?起始并不是,仔细看的话,芯片内部flash起始地址是0X08000000,而nandflash起始地址是0X80000000,后面的0不一样多的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1965619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】表的CRUD{insert 替换 查询 运算符 语句执行顺序 排序 limit 分页 truncate截断表 去重 mysql日志 聚合函数}

文章目录 1.重要点insert -- on duplicate key update替换查询运算符语句执行顺序排序limit 分页truncate截断表去重 2.mysql日志简介3.聚合函数group by CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 1.重要点…

塔子哥的环游之旅-腾讯2023笔试(codefun2000)

题目链接 塔子哥的环游之旅-腾讯2023笔试(codefun2000) 题目内容 塔子哥是一位热衷旅游的程序员。他所在的国家共有 n 个城市,编号从 1 到 n。这些城市之间有 m 条双向的交通线路,分别为飞机线路和火车线路。塔子哥起始位于编号为 1 的城市,他计划前往编号为 n 的城市进行旅游…

基于VScode和C++ 实现Protobuf数据格式的通信

目录 1. Protobuf 概述1.1 定义1.2Protobuf的优势 2. Protobuf 语法3、序列号和反序列化3.1 .pb.h 头文件3.2 序列化3.3 反序列化 4、测试用例 Protobuf详细讲解链接 1. Protobuf 概述 1.1 定义 protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立…

大模型算法面试题(十八)

本系列收纳各种大模型面试题及答案。 1、P-tuning v2 思路、优缺点是什么 P-tuning v2是清华大学自然语言处理实验室(THUDM)等研究机构提出的一种新的预训练模型优化方法,主要关注如何通过动态构建任务相关的提示序列来引导预训练模型进行更…

点可云ERP进销存V8版本—购货入库单的操作使用及各单据状态说明

本章我们讲解购货入库单的操作使用,包括导入导出功能、资金结算、生成其他关联单据、以及各单据状态的说明处理。 购货入库单用于收货、验收、接受采购的商品,并进行验收确保质量和数量。而购货入库单和购货订单的区别在于购货订单的审核后只会记录单据&…

【考研数学】概率论:4 种方法解答一道题,你觉得哪种方法又快又好呢?

今天要给大家分享的笔记是:《用画图的方式求解概率论题目很方便,但难点在于如何画和怎么理解》 在这篇考研笔记中,「荒原之梦考研数学」为同学们提供了 4 种不同的方法解答这一道题目,其中最特别的是第一种通过画图求解的方法。 …

rocketMq的使用和消费模式(异步消息,单项消息(使用mq处理日志),推迟任务(占座买票),批量消息)

rocketMq开始使用 rocketmq是怎么使用的消费模式异步消息单项消息:使用mq处理日志延迟任务(占座买票)批量 rocketmq是怎么使用的 public class ASimpleTest {Testpublic void simpleProduce() throws Exception{DefaultMQProducer producer …

分享IP 地址混淆知识

由于IPv4 地址资源的枯竭促使 IPv6 技术的广泛应用,从而形成了 IPv4 和 IPv6 并存的局面。这就逐渐出现了 IP 地址混淆导致的网络问题。 IP 地址混淆的表现形式 地址分配错误 在同时支持两种协议的网络中,可能会出现将 IPv4 地址错误地分配给 IPv6 接口…

正则采集器之三——前端搭建

前端使用有名的饿了么管理后台,vue3版本vue3-element-admin,首先从gitee中克隆一个vue3-element-admin模板代码vue3-element-admin: Vue3 Element Admin开箱即用的中后台管理系统前端解决方案,然后在此基础上进行开发。 1、修改vite.config.…

正点原子imx6ull-mini-Linux驱动之按键输入实验(9)

在前几章我们都是使用的 GPIO 输出功能,还没有用过 GPIO 输入功能,本章我们就来学 习一下如果在 Linux 下编写 GPIO 输入驱动程序。I.MX6U-ALPHA 开发板上有一个按键,我们 就使用此按键来完成 GPIO 输入驱动程序,同时利用第四十七…

LeetCode40题: 组合总和 II(原创)

【题目描述】 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates [1…

安装MongoDB UI客户端工具:mongodb-compass-1.40.2-win32-x64.msi

文章目录 1、安装 mongodb-compass-1.40.2-win32-x64.msi2、安装后配置链接地址: 1、安装 mongodb-compass-1.40.2-win32-x64.msi 2、安装后配置链接地址:

读书其实并没有那么大的作用

开场白 Hey,书虫们和生活探索者们!今天我们来聊聊一个老生常谈却又常谈常新的话题——读书。有人说,读书能改变命运,但也有人说,读书不过是生活的调味品。那么,读书到底有啥用?让我们一起来扒一…

卫星导航系统的应用领域与发展前景

当人们提到卫星导航系统,往往会联想到车载导航仪或手机上的地图应用。然而,卫星导航系统的应用远不止于此,它在许多领域都发挥着重要作用。下面将介绍几个卫星导航系统的应用领域及其发展前景。首先是海洋航行安全领域。在过去,海…

搜维尔科技:Haption:对于遥控机器人来说,触觉技术是什么

力反馈遥控机器人有哪些好处? 遥控机器人是机器人技术领域的一个领域,主要涉及远距离控制半自主机器人。它被定义为遥操作和远程呈现的结合。第一部分,遥控操作,使操作员能够远程控制机器人。第二部分,远程呈现&#…

全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用

全网最适合入门的面向对象编程教程:29 类和对象的 Python 实现-断言与防御性编程和 help 函数的使用 摘要: 在 Python 中,断言是一种常用的调试工具,它允许程序员编写一条检查某个条件。本文主要介绍了断言的应用场景和特点以及 …

jmeter-beanshell学习13-设置等待时间

接口测试时候,如果交易成功,一切正常,如果交易失败,可能会涉及回滚。之前写的都是做完交易,紧接着去查库,就可能遇到还没回滚完成,已经查完库了,查出来的数据不准确。既然写beanshel…

前端低代码必备:FrontendBlocks 4.0版本重磅发布,助力Uniapp-X原生APP开发

项目介绍 本软件是一款强大的所见即所得前端页面设计器,是低代码开发领域的基础设施,生成的代码不依赖于任何框架,实测可以将前端布局工作的耗时减少80%以上,最关键的是,它实现了人人都可以写前端页面的梦想。 不用写…

相似度计算方法

一、相似度计算方法 相似度算法是计算两个或多个对象之间相似程度的方法,这些对象可以是文本、图像、音频等不同类型的数据。在计算机科学、信息检索、推荐系统、数据挖掘等领域中,相似度算法具有广泛的应用。 二、应用场景 搜索引擎:用于文…