对STM32栈的理解Stack_Size EQU 0x00000400

news/2024/5/17 10:15:53/文章来源:https://blog.csdn.net/weixin_46023406/article/details/130644254

对STM32栈的理解Stack_Size EQU 0x00000400

    • Stack_Size EQU 0x00000400表示什么意思
    • 可以通过查找flash内存的方式定位存储
      • 1.flash
      • 2.RAM内部

本人主要为个人参考网络及个人总结而来比较,如有雷同请告知,即刻删除
以下引用网上资料 理解堆和栈的区别

(1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似

于数据结构中的栈。

(2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配

方式类似于数据结构中的链表。

(3)全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态

变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系

统自动释放。

(4)文字常量区:常量字符串就是存放在这里的。

(5)程序代码区:存放函数体的二进制代码。

Stack_Size EQU 0x00000400表示什么意思

0x00000400(0x400)十六进制转换为十进制是为 1k=1024Byte (字节)
表示:栈大小是1024字节,即局部变量不能大于1024字节
例如:局部变量例如u8 temp[4000]; 那么启动文件的栈应该修改为Stack_Size EQU0x00001000 ,此时栈是4096字节
栈是什么:栈stack是一块程序运行时用来存储临时变量的内存RAM空间。栈一般静态分配,并且后进先出,栈的生命周期从程序的起始直到程序结束。一个函数返回,其用到的栈空间就被释放给后续函数使用
详细的分析看这篇博客:
STM32栈stack 堆栈 注意事项 Stack_Size EQU 0x00000400

可以通过查找flash内存的方式定位存储

1.flash

详细的分析看这篇博客:
STM32 内存分配、堆栈以及变量存储位置理解与分析

#include "sys.h"
#include "delay.h"
#include "usart.h"	const int DATA1= 100; //一个常量int DATA2=0x1010;//一个有初始值的全局变量int main(void)
{ delay_init(500);		  //初始化延时函数LED_Init();		        //初始化LED端口uart_init(9600);printf("%p\r\n",&DATA1);printf("%p\r\n",&DATA2);while(1){                   }
}

1.可以通过 printf(“%p\r\n”,&DATA2);//打印地址
2.通过MAP文件查找
3.直接通过ST-LINK Utility软件直接查看芯片的flash。先定位到DATA1所在的地址

2.RAM内部

在这里插入图片描述
比较关键的点:
1、data : 存放初始化为非 0 值的全局变量
2、bss : 存放未初始化或者是初始化为 0 的全局变量
3、堆 (heap) : 由 malloc 申请,由 free 释放
4、栈 (Stack) : 存放局部变量和函数调用时的返回地址
详细的分析看这篇博客:
STM32 内存分配解析及变量的存储位置
看例子:

#include <stdio.h>
#include <stdlib.h>
int data_var = 500;//已经初始化的全局变量,存放在RAM中的data区
int bss_var0;//未初始化的全局变量,存放在RAM中的bss数据中
int bss_var1 = 0;//初始化为0的全局变量,存放在RAM中的bss数据中
static int static_var;//RAM的bssvoid my_function(void)
{static int static_var1 = 0;//RAM的bss静态初始化区int stack = 0;//存RAM放栈中char s[]="abc";   //栈char *p3= "1234567";   //在文字常量区Flashchar *buffer;//存放栈中const int value = 1;//只读,存RAM放栈中,并不是所有用 const 修饰的变量都是存放于只读变量区的buffer = malloc(10);//存放堆strcpy(p1,"123456");   //"123456"放在常量区
}

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PFCdocumentation_FISH Rules and Usage

目录 FISH Scripting FISH Rules and Usage Lines Data Types Reserved Names for Functions and Variables Scope of Variables Functions: Structure, Evaluation, and Calling Scheme Arithmetic: Expressions and Type Conversions Redefining FISH Functions Ex…

中断相关内容大全

中断基本概念&#xff1a;程序中断指计算机执行现行程序过程中&#xff0c;出现某种急需处理的异常情况或特殊请求&#xff0c;CPU暂时中止现行程序&#xff0c;而转去对这些异常情况或特殊请求进行处理&#xff0c;处理完毕后CPU又自动返回到现行程序的断点处&#xff0c;继续…

算法修炼之练气篇——练气十七层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

【最新可用】chatGPT镜像网站国内使用,免费稳定!

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT 2023.5.8新增一个 ChatGPT 国内免翻版 【网站名称】&#xff1a;Chat GPT Ai 【使用环境】&#xff1a;移动端/电脑网页端 ChatGPT是一款功能强大的免费在线聊天机器人&#xff0c;具有人工智能…

JavaScript通过js的方式来计算平行四边形的面积的代码

以下为通过js的方式来计算平行四边形的程序代码和运行截图 目录 前言 一、通过js的方式来计算平行四边形&#xff08;html部分&#xff09; 1.1 运行流程及思想 1.2 代码段 二、通过js的方式来计算平行四边形&#xff08;js部分&#xff09; 2.1 运行流程及思想 2.2 代码…

C#中如何使用ObjectPool来提高StringBuilder的性能

在C#中我们知道使用StringBuilder能提高大量字符串拼接的效率&#xff0c;其实StringBuilder的效率也可以提升&#xff0c;那就是使用ObjectPool。以下介绍怎么使用ObjectPool提高StringBuilder的性能。一、简介 C# ObjectPool类是一个内置的类库&#xff0c;用于实现对象…

AFG1062任意波形/函数发生器 产品资料

AFG1000 任意波形/函数发生器&#xff0c;提供 25MHz 或 60MHz 带宽&#xff0c;2 个输出通道&#xff0c;在整个带宽内 1mVpp 到 10Vpp 输出振幅&#xff0c;泰克 AFG1000 任意波形/函数发生器可以生成各种实验室测试所需波形。 *重要的是&#xff0c;它在泰克任意函数发生器系…

基于知识图谱的个性化学习资源推荐系统的设计与实现(论文+源码)_kaic

摘 要 最近几年来&#xff0c;伴随着教育信息化、个性化教育和K12之类的新观念提出,一如既往的教育方法向信息化智能化的转变&#xff0c;学生群体都对这种不受时间和地点约束的学习方式有浓厚的兴趣。而现在市面上存在的推荐系统给学生推荐资料时不符合学生个人对知识获取的…

小曾同学【五周年创作纪念日】——努力向前冲的菜鸟

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c; 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想当开发的测试&#xff0c;不是一个好…

自主可控不走捷径,中国长城做难且正确的事

2020-2022年是中国信创产业的重要推广期&#xff0c;在国家战略的支持下&#xff0c;自主可控领域诸多相关企业均获得绝佳发展良机。 但信创产业“完成替代”不是终点&#xff0c;“实现领先”方是目标。如今势已启、路尚远&#xff0c;前景广阔的市场并不意味着自主可控相关企…

Hadoop之block切片

切片是一个逻辑概念 在不改变现在数据存储的情况下&#xff0c;可以控制参与计算的节点数目 通过切片大小可以达到控制计算节点数量的目的 有多少个切片就会执行多少个Map任务 hdfs上数据存储的一个单元,同一个文件中块的大小都是相同的 因为数据存储到HDFS上不可变&#xff0…

Lucene(1):Lucene介绍

Lucene官网&#xff1a; http://lucene.apache.org/ 1 搜索技术理论基础 1.1 lucene优势 原来的方式实现搜索功能&#xff0c;我们的搜索流程如下图&#xff1a; 上图就是原始搜索引擎技术&#xff0c;如果用户比较少而且数据库的数据量比较小&#xff0c;那么这种方式实现搜…

2路 QSFP,40G 光纤的数据实时采集(5GByte/s 带宽)板卡设计原理图 -PCIE732

板卡概述 PCIE732 是一款基于 PCIE 总线架构的高性能数据传输卡&#xff0c;板卡具有 1 个 PCIex8 主机接口、2 个 QSFP40G 光纤接口&#xff0c;可以实现 2 路 QSFP 40G 光纤的数据实时采集、传输。板卡采用 Xilinx 的高性 能 Kintex UltraScale 系列 FPGA 作为实时处理器…

小程序开发中的插件、组件、控件到底有什么区别?

小程序插件代码由一些自定义组件和 JS 代码文件构成&#xff0c;插件开发者在发布插件时&#xff0c;这些代码被上传到后台保存起来。当小程序使用插件时&#xff0c;使用者需填写插件的 AppID 和版本号&#xff0c;就可从后台获取相应的插件代码。小程序代码编译时&#xff0c…

2023什么蓝牙耳机好?经销商盘点新手必入蓝牙耳机品牌

蓝牙耳机是除手机外我们使用频率最高的数码产品&#xff0c;我做蓝牙耳机经销商五年来&#xff0c;对各个品牌都有深入了解。近期看到很多新手们咨询什么蓝牙耳机好&#xff0c;我给大家盘点一下新手必看的五大蓝牙耳机品牌。 1.JEET Air 2蓝牙耳机 推荐理由&#xff1a;专为舒…

知识点回顾(一)

1.final,finally ,finalize final?修饰符&#xff08;关键字&#xff09;如果一个类被声明为final&#xff0c;意味着它不能再派生出新的子类&#xff0c;不能作为父类被继承。因此一个类不能既被声明为 abstract的&#xff0c;又被声明为final的。将变量或方法声明为final&…

外强中干——双向带头循环链表

前言&#xff1a;众所周知&#xff0c;链表有八种结构&#xff0c;由单向或双向&#xff0c;有头或无头&#xff0c;循环或不循环构成。在本篇&#xff0c;将介绍8种链表结构中最复杂的——双向带头循环链表。听着名字或许挺唬人的&#xff0c;但实际上双向带头循环链表实现起来…

H3C防火墙单机旁路部署(网关在防火墙)

防火墙旁路部署在核心交换机上&#xff0c;内网有三个网段vlan 10&#xff1a;172.16.10.1/24、vlan 20&#xff1a;172.16.20.1/24、vlan30&#xff1a;172.16.30.1。要求内网网关在防火墙设备上&#xff0c;由防火墙作为DHCP服务器给终端下发地址&#xff0c;同时由防火墙来控…

网站域名历史记录批量查询-老域名建站历史快照数据查询

域名建站历史查询软件 域名建站历史查询软件是一种用于查询一个域名被使用的网站的历史记录的工具。它可以提供许多有用的信息&#xff0c;包括该网站的创建和修改日期、使用的网站建设平台、使用的CMS系统、网站的历史页面内容和页面结构等。 域名建站历史查询软件的作用是帮…

【MATLAB第30期】基于MATLAB的adaboost多分类预测集成学习模型(四种模型GDA高斯判别分析、Knn、NB朴素贝叶斯、SVM)

【MATLAB第30期】基于MATLAB的adaboost多分类预测集成学习模型&#xff08;四种模型GDA高斯判别分析、Knn、NB朴素贝叶斯、SVM&#xff09; 一、简介 弱分类器 %1.GDA高斯判别分析 %2.Knn (NumNeighbors 5) K邻近 %3.Naive Bayes 朴素贝叶斯 %4.SVM 支持向量机 强分类器 1.a…