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

STM32单片机的FLASH和RAM

STM32内置有Flash和RAM(而RAM分为SRAM和DRAM,STM32内为SRAM),硬件上他们是不同的设备存储器、属于两个器件,但这两个存储器的寄存器输入输出端口被组织在同一个虚拟线性地址空间内。在这里插入图片描述

MDK预处理、编译、汇编、链接后编译窗口会显示如下一段关于程序和数据大小的信息:

在这里插入图片描述

Code:是程序中代码所占字节大小;

RO-data(Read Only-Data):程序只读的变量,也就是带const的,和已初始化的字符串等;

RW-data(Read Write-Data):已初始化的可读写全局/静态变量;

ZI-data(Zero Initialize-Data):未初始化的可读写全局/静态变量;

程序占用的Flash存储器的空间大小=Code+RO data+RW data = 生成的bin文件大小。
在这里插入图片描述
程序占用的SRAM存储器的空间大小RW data+ZI data。
在这里插入图片描述

STM32上电跑程序前会把可以进行修改的变量复制到SRAM上,如RW data、ZI data,而对于不需要修改的数据如Code、RO-data不用复制到SRAM中,未初始化的变量ZI-data不会占用SRAM的空间,处理器只会把未初始化的变量需要占用的字节个数存放在SRAM,并不会真正为其分配空间。

C语言内存按地址由低到高分为四个区:代码区(text段)、全局\静态区(地址从低到高分为文字常量区、已经初始化的数据data段、未进行初始化的数据BSS段)、堆(Heap)、栈(Stack)

对于栈区:由编译器自动释放,存放函数的形参、局部变量等。每当一个函数被调用时,该函数的返回类型和一些调用的信息被存放到栈中,然后这个被调用的函数再为它的变量(如局部变量)在栈上分配空间,每调用一个函数一个新的栈就会被使用。局部变量的生命周期也是有区别的,静态局部变量的生命周期是从程序开始到程序结束,而非静态局部变量在函数结束后被回收销毁。栈区存放数据是从高地址位向低地址位存放的,也就是栈顶(地址在栈区里最低)存放最新数据,栈底(地址在栈区里最高)存放第一个数据,是一块连续的内存区域,最大容量是由系统预先定义好的,申请的栈空间超过这个界限时会提示溢出,用户能从栈中获取的空间较小。
栈采用后进先出(LIFO) 策略,就像一杯倒立的水杯,杯底(也就是栈底)的水是最后倒出的也是最先倒进去的,杯顶(也就是栈顶)的水是最先倒出的也是最后倒进去的。
这里讲到变量的生命周期,那就回顾生命周期、作用域的意思。
生命周期:指的是程序执行过程中该变量存在的时间长短;
作用域:指的是变量可以在哪儿用,如只能在本函数调用、只能在本文件调用、可以被其他文件调用;

对于堆区:用于动态内存分配,位于BSS段和栈中间的地址区域,由程序员手动申请分配(malloc)和释放(free)。堆是从低地址位向高地址位增长,采用链式存储结构。频繁的使用malloc/free函数可能造成内存空间的不连续,产生碎片。当申请堆空间时库函数是按照一定的算法搜索可用的足够大的空间,因此堆的效率比栈要低的多。

在这里插入图片描述

相关文章:

STM32单片机的FLASH和RAM

STM32内置有Flash和RAM(而RAM分为SRAM和DRAM,STM32内为SRAM),硬件上他们是不同的设备存储器、属于两个器件,但这两个存储器的寄存器输入输出端口被组织在同一个虚拟线性地址空间内。 MDK预处理、编译、汇编、链接后编…...

Java 二叉树的遍历

二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。前序遍历(根 左 右)先访问根结点,然后前序遍历左子树…...

实习日记-C#

数据类型 字符串常量 string a "hello, world"; // hello, world string b "hello, world"; // hello, world string c "hello \t world"; // hello world string d "hello \t wor…...

Tech Lead如何引导团队成员解决问题?

作为一个开发团队的Tech Lead,当团队成员向你寻求帮助时,你有没有说过下面这些话? 你别管了,我来解决这个问题你只要。。。就行了你先做其他的吧,我研究一下,然后告诉你怎么做 当我们说这些话时&#xff…...

07--组件

一、小程序组件分类微信团队为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发。小程序中的组件也是非常丰富的,开发者可以基于组件快速搭建出漂亮的页面结构。小程序中的组件其实相当于网页中的HTML标签,只不过标签…...

怎么做好一个完整的项目复盘

复盘,是运营必不可少的能力,小到一次买菜的经历,大到百亿千亿的投资项目,都可以通过复盘来总结规律、提升水平。简单说来,复盘可以达到的效果有两条:优化弱项,强化强项明确自己的价值&#xff0…...

浅谈一下mysql8.0与5.7的字符集

修改字符集 修改步骤 在MySQL8.0版本之前,默认字符集为1atin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为ut8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改…...

paddle推理部署(cpu)

我没按照官方文档去做,吐槽一下,官方文档有点混乱。。一、概述总结起来,就是用c示例代码,用一个模型做推理。二、示例代码下载https://www.paddlepaddle.org.cn/paddle/paddleinferencehttps://github.com/PaddlePaddle/Paddle-In…...

想开发IM集群?先搞懂什么是RPC!

即时通讯网官方技术群和社区里,经常有开发者在纠结怎么开发IM集群,虽然真正的使用人数,可能用个人电脑单机都能支撑。你也许会说,明明不需要用到IM集群,干吗要自找麻烦?答曰:“老板说这个得有&a…...

案例13-前端对localStorage的使用分析

一:背景介绍 前端在调用后端接口获取某一个人的评论次数、获赞次数、回复次数。调用之后判断后端返回过来的值。如果返回回来的值是0的话,从缓存中获取对应的值,如果从缓存中获取的评论次数为空那么其他两个的次数也为0。 二:思路…...

CNNIC第51次中国互联网络发展状况统计报告用户规模变化发布、解读与白杨SEO看法

一、第51次《中国互联网络发展状况统计报告》发布 3月2日,中国互联网络信息中心(简称CNNIC)在京发布第51次《中国互联网络发展状况统计报告》。《报告》显示,截至2022年12月,我国网民规模达10.67亿,较2021…...

【数据结构】单链表的实现

本篇主要总结单链表是如何实现的,数据结构是如何管理数据的,详细的介绍每一步是如何实现以及各种注意事项。🚀1.单链表的实现🚀🍭1.1单链表的尾插🍭1.2单链表的头插🍭1.3单链表的打印&#x1f3…...

从0到1做产品!产品设计的6个步骤

相信不少产品经理在刚入行时,都遇到过这样的情况: 接到需求后不知所措,然后下意识地照着竞品开始盲目地画原型。 其实,这样的设计过程不仅缺乏逻辑性,在后续阶段也很容易出现各种问题。 在此,跟大家分享一下…...

ESP32遥控器软硬件设计

一. 前言 做智能车 或者 四轴飞控怎么能少得了遥控器呢!在这里给大家分享一个简单的基于ESP32遥控器的设计,包括软硬件以及3D外壳。 二. 硬件设计 1. 功能介绍 遥控器嘛,通信方式是最重要的,本设计支持 WIFI、蓝牙 和 2.4G&…...

vue-template-admin的keep-alive缓存与移除缓存

一,场景 A页面是表单页面,填写后需要跳转B页面。如果B页面不操作返回的话,应该能还原A页面的内容,而如果B页面点击提交,再回到A页面的时候,应该清除缓存。 二,实现方法 A页面要缓存数据&…...

【人工智能 AI】机器学习快速入门教程(Google)

目录 机器学习术语 标签 特性 示例 模型 回归与分类 深入了解机器学习:线性回归 深入了解机器学习:训练和损失 平方损失函数:一种常用的损失函数 机器学习术语 预计用时:8 分钟 什么是(监督式&#xff…...

适配器模式

概览 适配器模式是一种结构型设计模式,用于将一个类的接口转换为客户端所期望的另一种接口。通常情况下,这种转换是由一个适配器类完成的,适配器类包装了原始类,并实现了客户端所期望的接口。这种模式非常适用于在不修改现有代码…...

00后跨专业学软件测试,斩获8.5K高薪逆袭职场

我想说的第一句:既然有梦想,就应该去拼搏还记得,我大学毕业前,就已经暗下决心到xxx培训机构接受培训。那个时候,没有任何海同公司的人主动找我或者联系过我,我是自己在网上发现了xxxx培训机构的&#xff01…...

数据结构和算法学习

文章目录精通一个领域切题四件套算法算法的五个条件流程图数据结构数据与信息数据信息数据结构和算法数据结构算法时间复杂度空间复杂度数组 Array优点缺点数组和链表的区别时间复杂度链表 Linked List优点缺点时间复杂度单向链表双向链表循环链表双向循环链表堆栈 Stack队列 Q…...

剑指 Offer II 012. 左右两边子数组的和相等

题目链接 剑指 Offer II 012. 左右两边子数组的和相等 easy 题目描述 给你一个整数数组 nums,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那…...

Java货物摆放

题目描述 小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 � n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所…...

计算机求解满足三角形各边数字之和相等的数字填充

圆圈处不重复的填入1至9&#xff0c;使得每条边的四个数字相加的总和相等。 求解思路&#xff1a; 数组中存放1到9的数字&#xff0c;每次随机交换两个数字&#xff0c;构建出新的数字组合&#xff0c;计算这个数字组合是否符合要求。 #include <stdio.h> #include <…...

python魔术方法

魔术方法 魔术方法就是一个类中的方法&#xff0c;和普通方法唯一的不同是普通方法需要调用&#xff0c;而魔术方法是在特定时刻自动触发。这些魔术方法的名字特定&#xff0c;不能更改&#xff0c;但是入口参数的名字可以自己命名。 基本魔术方法 new(cls[,…]) _new_ 是在…...

从0开始学python -48

Python CGI编程-3 CGI中使用Cookie 在 http 协议一个很大的缺点就是不对用户身份的进行判断&#xff0c;这样给编程人员带来很大的不便&#xff0c; 而 cookie 功能的出现弥补了这个不足。 cookie 就是在客户访问脚本的同时&#xff0c;通过客户的浏览器&#xff0c;在客户硬…...

当面试官问我前端可以做的性能优化有哪些

面试过程中面试官问到前端性能优化有哪些&#xff0c;当我咔咔一顿输出之后面试官追问&#xff1a;前端可以做的性能优化有哪些呢&#xff1f; 前端优化大概可以有以下几个方向&#xff1a; 网络优化页面渲染优化JS优化图片优化webpack打包优化React优化Vue优化 网络优化 D…...

一文读懂Java/O流的使用方法和技巧

1.前言 Java 中的 I/O 流是实现输入和输出的一种机制&#xff0c;可以用来读写文件、网络、内存等各种资源。Java 提供了各种类型的流&#xff0c;包括字节流和字符流&#xff0c;以及面向文本和二进制数据的流。在本文中&#xff0c;我们将深入探讨 Java I/O 流的各个方面&am…...

AI for Science系列(二):国内首个基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!

AI for Science被广泛认为是下一代科研范式&#xff0c;可以有效处理多维度、多模态、多场景下的模拟和真实数据&#xff0c;解决复杂推演计算问题&#xff0c;加速新科学问题发现[1] 。百度飞桨科学计算工具组件赛桨PaddleScience是国内首个公开且可应用于CFD&#xff08;Comp…...

SpringCloud简单介绍

文章目录1. 开源组件2. CAP原则1. 开源组件 功能springcloud netflixspringcloud alibabaspringcloud官方其他服务注册与发现eurekanacosconsulzookeeper负载均衡ribbondubbo服务调用openFeigndubbo服务容错hystrixsentinel服务网关zuulgateway服务配置的同一管理cofig-server…...

《uniapp基础知识》学习笔记Day38-(Period2)全局文件一些常用的配置

如果进行开发的话&#xff0c;首先要配置路由页面 page.json 页面路由 pages.json 文件用来对 uni-app 进行全局配置&#xff0c;决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等。 {"pages": [{"path": "pages/component/index…...

APICloud 弹动与滚轴冲突的解决模拟

当打开页面的bounces开关来实现下拉刷新和上翻加载是&#xff0c;如果页面中有scroll-view&#xff0c;那么手指上下滑动时弹动会触发&#xff0c;而滚轴无法正常实现&#xff0c;只有按住不动再拖动滚轴才会触发。开始想通过获取手指点击屏幕的坐标点设置触发条件来解决两者的…...

网站设计主题/新闻软文自助发布平台

一个人只拥有今生今世是不够的&#xff0c;他还应该拥有一个诗意的世界。——王小波什么是诗意的世界&#xff1f;在现代这个社会中&#xff0c;还有多少人拥有着诗意的世界呢&#xff1f;我觉得在这个世界里&#xff0c;人是放松的、自由的、心灵是愉悦的、又是充满着美好与味…...

做网站需要什么学历/介绍网络营销的短文

1、ls命令作用 ls命令用于显示指定工作目录下之内容&#xff08;列出目前工作目录所含之文件及子目录) 2、ls命令结构 drwxr-xr-x 2 root root 4.0K 3月 23 2017 etc “d” 表示文件的类型为目录 “rwx” 表示文件所有者的权限:r是读&#xff0c;w是写&#xff0c;x是…...

招聘网站比对表怎么做/网站排名seo培训

本文转自&#xff1a;http://www.cnblogs.com/henw/archive/2011/09/23/2186387.html 1. 需要引用的类库 ?1234using System.Net; using System.IO; using System.Text; using System.Text.RegularExpressions;2. 获取其他网站网页内容的关键代码 ?12345WebRequest request …...

wordpress 文字编辑/微信营销的优势

官网https://code.visualstudio.com/Download下载最新版 一、下载与安装 注&#xff1a;解压到非系统盘&#xff0c;文件夹最好不要出现中文和空格&#xff0c;解压后直接运行code.exe即可 二、将vscode修改为中文环境 1.下载安装中文语言包 点击左侧工具栏的extensions&a…...

怎么样免费做公司网站/如何自己搭建一个网站

说明&#xff1a;文章是用windows live writer自动上载的&#xff0c;有些特殊符号显示不正确&#xff0c;如“>”显示为“>”。须修改之处太多&#xff0c;无暇修改。阅读不便之处&#xff0c;请见谅&#xff01;特点&#xff1a;ASM能代替外部LVM或FS的功能&#xff0c…...

速升网站/搜索引擎优化技巧

一、单项选择题&#xff08;本大题共20小题&#xff0c;每小题2分&#xff0c;共40分&#xff09;在每小题列出的四个备选项中只有一个是符合题目要求的&#xff0c;请将其代码填写在题后的括号内。错选、多选或未选均无分。1.下面不属于网络操作系统功能的是&#xff08;B  …...