stm32局部变量过大,导致栈溢出

2023-11-09

        在做一个以stm32为主控的项目时发现自己程序中一个机构体里面的数据总是一运行就被改变,刚开始以为是自己不小心在哪个地方用了extern扩展了变量的作用域,重新赋了值, 自己忘记了,后来查找了好久都没有其他地方使用这个结构体变量,于是开始单步调试,结果进入一个函数的时候(里面定义了一个200个数据float型的数组),发现只要定了一个这个数组,这时前文提到的那个结构的值就发生改变,通过在keil软件中的Memory窗口查看结构体的变量可以清楚看到结构体的地址里面的数据在这个时候发生改变, 然后修改,这个局部变量数组的大小,把它改小之后,就没有发生问题。因为局部变量是储存在栈中的,于是猜想,这种问题应该是stm32的栈的内存的溢出造成的。

通过查找资料发现stm32栈和堆的大小,是可以通过startup_stm32f40xx.s(stm32f407)文件设置的,如下图:

其中Stack_Size为栈的大小,默认为0x400,上文提到的出现的问题就是这里的栈的大小太小,溢出导致的,这里出现的问题是某个变量被改变,更严重的时候会修改了芯片核心内存里面的东西,会直接导致芯片奔溃。这里可以改动,从而改变芯片的栈的大小,Heap_Size为堆的大小,默认为0x200,如果没有用没有用到标准库的malloc,动态分配内存,这里的heep_size可以设置为0;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32局部变量过大,导致栈溢出 的相关文章

随机推荐

  • 【云原生】Kubeadmin安装k8s集群

    目录 前言 一 环境部署 1 1 服务器部署功能 1 2 环境准备 所有节点 二 安装docker 所有节点 三 所有节点安装kubeadm kubelet和kubectl 3 1 定义kubernetes源 3 2 开机自启kubelet
  • 【蓝桥杯每日一练:递归算法求两个数的最大公约数】

    问题描述 求最大公约数问题 输入格式 输入一行 包含两个正整数 lt 1 000 000 000 输出格式 输出一个正整数 即这两个正整数的最大公约数 输入样例 6 9 输出样例 3 代码 n m map int input split i
  • idea导入Web项目并配置tomcat运行

    文章目录 一 导入项目 二 配置tomcat 三 配置Web项目在tomcat下的运行包 一 导入项目 File gt Open 然后选择要导入的web项目路径 二 配置tomcat 第一步 单机右上角的Edit Configuration
  • 面试题:海量数据去重、Top-k、BitMap问题整理

    问题引入 首先直接进入正题 40亿QQ号如何设计算法去重 相同的QQ号码仅保留一个 内存限制为1个G 腾讯的QQ号都是4字节正整数 所以QQ号码的个数是43亿左右 理论值2 32 1个 又因为是无符号的 翻倍了一下 所以43亿左右 方法1
  • 交错级数如何判断收敛_11种常数项级数敛散性判别法(审敛法)的粗糙总结&11道好玩的小题...

    追不上的上古玄武告诉我们 无穷个正数加在一起不一定是正无穷 以此为开端 有了极限的观念 还有了级数的观念 很多数列的Sn很难求 这篇文章只讨论极其片面的判断常数项级数是否收敛的十一个方法 PART 1 对于十一种 级数敛散性 判别法的粗糙总
  • STATA:缩尾、截尾的概念和命令

  • Python字符串地常规操作:取值,切片,查找,替换,分割,拼接,转义

    字符串操作 字符串取值 字符串取单个值 举例 从零开始 每个字符对应的索引 h 0 e 1 l 3 s hell0 a tong print s 0 print s 5 在这里 符号 也是一个字符 print s 7 索引为7 对应的是 空
  • eclipse 配置 Tomcat 遇到的问题以及解决办法

    Eclipse是一个开发JSP的很好的工具 而笔者在配置Tomcat服务器的时候遇到了一些小问题 在这里给大家总结一些经验 希望能帮助同样遇到这些问题的广大同行们能够简单轻松地解决这些问题 笔者在以前自学JSP的时候曾经用过Tomcat E
  • Android ,java.io.IOException: Failed to instantiate extractor.

    mediaExtractor new MediaExtractor mediaExtractor setDataSource mFilePath mFilePath 为 sd 上路径 sdcard 月亮代表我的心萨克斯2 mp3 1 检查
  • 【Java】环境配置以及快速切换环境的技巧和方法

    前言 前几天想用 burp 抓包来着 发现 burp 突然不能用了 重装了 burp 发现还是不能用 意识到是 java 环境出了问题 在之前有段时间没玩 CTF 去搞开发了 于是java环境糊里糊涂改成了 JAVA 18 结果之前的 bu
  • Android项目JNI层C/C++文件中添加LOG信息

    第一步 在项目的mk文件中加入 LOCAL LDLIBS llog 第二步 在要添加LOG的cpp文件中引入一个头文件和添加一个定义 include
  • M - Mountaineers (MST+树上倍增)

    将原图中点每个点四连通方向的点建边 权值为两点权值中较大者的值 对这个图建立最小生成树 那么最小生成树上任意两点之间路径上的最大点权即为答案 因为是树 所以任意两点间的简单路径唯一 通过树上倍增维护维护树上区间最值求出最大值即可 pragm
  • pid算法控制

    一 先来彻底搞懂PID到底是啥 啥是PID PID 就是 比例 proportional 积分 integral 微分 derivative 是一种很常见的控制算法 在工程实际中 应用最为广泛的调节器控制规律为比例 积分 微分控制 简称PI
  • 数据结构_串的匹配(BF和KMP算法)

    数据结构 串的匹配 BF和KMP算法 BF brute force 算法 算法定义 代码实现 算法分析 KMP算法 算法详解 代码实现 算法分析 子串的定位运算通常被称为串的模式匹配或串匹配 BF brute force 算法 算法定义 一
  • cmd pc如何开多个微信_多个合伙人开公司,股权应该如何分配

    伴随着互联网发展的越来越快 不少的创业型的公司在这快节奏的时代以惊人的速度展现在世人面前 但是这个同时创业的道路也是艰辛的 不过有着志同道合的小伙伴或许能够在成功的道路上又多了几分把握 有句俗话说的好你能走多远 将取决于是谁与你同行 虽然说
  • 【已成功解决】使用vpn/代理后无法正常上网/无法正常访问网站

    文章目录 一 问题描述 二 解决步骤 三 原因分析 一 问题描述 很多同学在学习访问学校提供的资源时或者一些小伙伴在公司办公时需要使用VPN 但是当我们关闭VPN后 却发现没有办法正常连接到互联网了 可以尝试以下方法解决 至于导致这种情况发
  • ANSI是个啥???

    来自 https blog csdn net imxiangzi article details 77370160 http www cnblogs com malecrab p 5300486 html 用Notepad 创建一个文本文件
  • 解决Android 8.1 获取不到wifi名称

    在安卓8 1版本中 用 WifiInfo getSSID 可能出现 unknown ssid 或者什么也没读出来 解决方案 用ConnectivityManager 这个类解决 代码如下 获取SSID param return WIFI 的
  • 前端传JSON嵌套类,且属性名首字母大写时后端接收的一些坑

    因为开发腾讯云业务 要写一个回调函数 规范文档上说会传一个json传给我 EventType ComposeMediaComplete ComposeMediaCompleteEvent TaskId 1256768367 ComposeM
  • stm32局部变量过大,导致栈溢出

    在做一个以stm32为主控的项目时发现自己程序中一个机构体里面的数据总是一运行就被改变 刚开始以为是自己不小心在哪个地方用了extern扩展了变量的作用域 重新赋了值 自己忘记了 后来查找了好久都没有其他地方使用这个结构体变量 于是开始单步