STM32内存溢出,HardFault_Handler的处理方法

2023-05-16

STM32内存溢出,HardFault_Handler的处理方法

原文网址:https://blog.csdn.net/electrocrazy/article/details/78173558
部分情况下,可应用于在***OS系统***中寻找程序出错位置。
用过方法二,成功找到了用操作系统(FreeRTOS)时程序出错的地方。

在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。
在这里插入图片描述
STM32出现硬件错误可能有以下原因:

    (1)数组越界操作;

    (2)内存溢出,访问越界;

    (3)堆栈溢出,程序跑飞;

    (4)中断处理错误;

    遇到这种情况,可以通过以下2种方式来定位到出错代码段。

方法2:

  2.1在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。

在这里插入图片描述

  2.2 在Keil菜单栏点击“View”——“Call Stack Window”弹出“Call Stack + Locals”对话框。然后在对话框中右键选择“Show Caller Code”,就会跳转到出错之前的函数处,仔细查看这部分函数被调用或者数组内存使用情况。

方法1:

  1.1在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。

在这里插入图片描述

  1.2 在Keil菜单栏点击“View”——“Registers Window”,在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,继续查看MSP(主堆栈指针)的值,如果R14(LR) = 0xFFFFFFFD,继续查看PSP(进程栈指针)的值。我的程序R14(LR) = 0xFFFFFFF9,接下来以此为例。

在这里插入图片描述

  1.3 在Keil菜单栏点击“View”——“Memory Windows”——“Memory1”,在“Address”地址栏中输入MSP的值:0x20001288,然后在对应的行里找到地址。地址一般以0x08开头的32位数。本例中,地址为0x08003CB9。

在这里插入图片描述

  1.4 在Keil菜单栏点击“View”——“Disassembly Window”,在“Disassembly”窗口中右击,在下拉菜单中选择“Show Disassemblyat Address...”。在弹出框“Show Code atAdress”的地址框中输入地址0x08003CB9进行搜索,然后就会找到相对应的代码。这里的代码就是进入循环中断之前的情况。仔细查看附近区域的相关代码来排查错误具体原因。

在这里插入图片描述

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

STM32内存溢出,HardFault_Handler的处理方法 的相关文章

  • 【JAVA】-判断链表是否包含环

    目录 一 问题二 解题思路三 解题代码 一 问题 判断链表是否包含环 二 解题思路 判断链表是否包含环属于经典问题了 xff0c 解决方案也是用快慢指针 xff1a 每当慢指针 slow 前进一步 xff0c 快指针 fast 就前进两步
  • FTPClient 中文目录、中文文件名乱码、上传文件失败 解决方法

    FTPClient上传中文目录 中文文件名乱码问题解决方法 本文使用的FTP工具包为 apache的 commons net 起因 xff1a 今天在做FTP上传时一直上传文件上传不了 xff0c xff08 代码是跑通了 xff0c 但是
  • maven idea设置查找依赖优先从本地仓库获取

    第一步 xff1a 在这个settings里面 xff0c 设置默认的 第二步设置参数 DarchetypeCatalog 61 internal
  • Android集成OpenCV(NDK)

    1 下载OpenCv的动态库 so OpenCv官网 这边下载的是4 6 0 2 解压opencv 4 6 0 android sdk zip 复制目录opencv 4 6 0 android sdk OpenCV android sdk
  • Win10 重装系统备忘

    文章目录 一 美化工具1 Dism 43 43 很方便的简化 34 资源管理器 34 xff0c 比网上的教程方便很多 还有右键菜单等等 2 StartIsBack 可以吧 34 Win10菜单栏 34 xff08 屏幕下面那一横排 xff
  • ubuntu无法打开terminal

    我是在将系统显示设置为中文显示后 xff0c 重启无法打开终端的 xff0c 可以按照下面的链接进行修改 http blog csdn net u010395144 article details 52794947
  • MariaDB用法——增删改查

    数据库四大护法 增insert 删delete 改update 查select 设置禁用mysql删除语句 xff0c 防止操作者误删数据 mysql secure installation mysql基础安全设置 xff0c 设置密码 c
  • 女生学Java好不好就业?看看学完Java的你就业道路有多广?

    技能总在将学未学时最为美好 xff0c 高薪可期 Java xff0c 这门于 1995 年正式发布的老牌编程语言 xff0c 在每年 Github 的开发者报告统计出来之时 xff0c 总居前三高位不下 xff0c 成为使用人数最多的编程
  • Spring MVC 执行流程详解

    一 Spring MVC 执行流程 客户端的所有请求都会交给前端控制器DispatcherServlet来处理 xff0c DispatcherServlet会负责调用系统的其他模块来完成用户请求的处理 xff1b 即用户发送的请求会先从D
  • 程序员5大热门发展行业,就业迷茫的同学注意啦!

    信息化时代 xff0c 程序员成为各行业中的香饽饽岗位 xff0c 发展空间大 xff0c 薪资福利高 xff0c 因此最近几年转向程序员岗位的小伙伴越来越多 xff0c 不过因为这种 青睐 xff0c 使得程序员岗的竞争也越发大了 xff
  • 非常易懂且全面的计算机科学概论知识总结

    计算机科学概论 xff08 美 xff09 布鲁克希尔 这本书非常推荐大家去读一下 xff0c 作者用非常浅显易懂的语言让你能够对计算机领域有一个全面的认识和了解 xff0c 我在研一时候读的 xff0c 这本书让我受益匪浅 xff0c 对
  • Java 进口管制限制解除

    版权声明 xff1a 本文为博主原创文章 xff0c 遵循 CC 4 0 BY SA 版权协议 xff0c 转载请附上原文出处链接和本声明 由于国外的进出口限制 xff0c 对Java密码算法体系进行了一些限制 xff0c 为了解除限制 x
  • java中的String可以有多长?

    参考链接 xff1a https www cnblogs com ibelieve618 p 6380328 html https www cnblogs com htyj p 8337209 html https blog csdn ne
  • 实训第一周周志

    通过这一周的学习 xff0c 我学会了以下几点 xff1a 1 学会了如何规范自己的目录 xff0c 建立自己的工作区 像老师一样建立 WuCS 01tech 02proj day01 txt day02 txt 01tech day01
  • 实训第二周周志

    通过这一周的学习 xff0c 我学会了以下几点 xff1a 1 我学会了 git 代码的提交 首先创建仓库与仓库初始化 xff0c 然后建立分支 xff0c 提交代码到分支 1 1 创建工作目录 1 2 初始化仓库git init 1 3
  • 实训第三周周志

    通过这一周的学习 xff0c 我学会了以下几点 xff1a 1 了解了项目的安排 1 1 第一阶段 xff1a 01 项目GUI 43 AI 基础技术 xff08 数据集处理 43 机器学习 特征的分类 43 深度学习 特征的学习 xff0
  • 实训第四周周志

    通过这一周的学习 xff0c 我学会了以下几点 xff1a 1 了解了一下神经网络模型 01 卷积神经网络 xff1a 手写数字识别 02 Lenet 5 03 AlexNet 04 ResNet 05 GoogLeNet 06 Effic
  • 实训第五周周志

    最后一周的学习主要是对自己项目的优化和改进 xff0c 以及结项 我们项目的结构图和类图如下所示 xff1a 结构图 xff1a 类图 xff1a 框架图说明 1 本次项目工程分为人脸识别和车牌识别 xff0c ui设计共有两个页面 xff
  • 【Python】Python 编程基本规范

    文章目录 前言一 编码二 代码格式1 缩进2 行宽3 引号4 空行5 import语句6 空格7 换行8 docstring 结语引用 前言 在初步学习 Python 之后 xff0c 我们需要了解 Python 代码的规范 本文章将简单介
  • MongoDB基础指令

    MongoDB基础指令 1 创建数据库2 删除数据库3 创建集合4 删除集合5 插入文档 数据 6 更新数据7 删除文档8 查询文档9 条件操作符10 Type操作符 1 创建数据库 use 数据库名字 use TestData use 语

随机推荐