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

ARM Coretex-M核心单片机(STM32)找到hardfault的原因,与hardfault解决方法

1. 前提基础知识(ARM异常 压栈流程)M核栈增长是地址逐渐减小的
在这里插入图片描述

进入hardfult后看MSP或者SP的值,看下边第二章图如果hardfult里边啥都没有,就只有个while(1){} 可以用第二张图判断SP+20里边存储的就是LR寄存器的值,也就是产生hardfault前导致的问题的地方,把这个值像第一张图一样写给PC就能定位到因为哪里产生的hardfault,

现在还在推出来个类似的公式解决方法,发现函数里边写的东西越多函数栈指针会变化,也就不能直接取*(SP+24)|(SP+23)|(SP+22)|*(SP+21),拼凑出来的值就是LR的值可以直接赋值给PC,定义个函数指针给赋值了,在调用在hardfault里边直接就可以跳过去

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

还在研究公式化的方法

http://www.dtcms.com/a/39007.html

相关文章:

  • rk3588增加独立分区
  • 【自学笔记】Vue基础知识点总览-持续更新
  • 智能运维语义标注体系技术框架与工程化实践
  • 【嵌入式原理设计】实验六:倒车控制设计
  • 深入Linux序列:进程的终止与等待
  • Python Cookbook-2.13 使用C++的类iostream语法
  • SSD网络预测与训练阶段总结
  • mysql多表查询
  • 【嵌入式Linux应用开发基础】网络编程(4):UDP协议
  • 数字可调控开关电源设计(论文+源码)
  • Windows 图形显示驱动开发-WDDM 3.2-自动显示切换(七)
  • ubuntu安装docker compose
  • 2015-2025大连社保年度缴费基数
  • 说一下类装载的执行过程?
  • JxBrowser 7.42.1 版本发布啦!
  • 对话式AI引擎:DeepSeek技术引领多模态交互新篇章
  • 刚充值Deepseek账号,但接入官方的API却遇到了问题【VSCode Cline Cursor Deepseek deepseek-reasoner】
  • 表单验证和正则表达式
  • debain12.9安装unsloth大模型微调环境
  • 为什么用match case 而不用if else
  • 算法-二叉树篇11-左叶子之和
  • 计算机网路:自顶向下方法——第三章 运输层
  • 如何评估 LLM:大型语言模型评估方法全解析与综述
  • 【Linux 操作系统】进程管理 - 冯诺依曼体系|进程|环境变量|进程地址空间
  • 服务器间迁移conda环境
  • 【字符串】最长公共前缀 最长回文子串
  • 保护密码等敏感信息的几个常用方法
  • HTML邮件的制作以及遇到的问题
  • 每天练打字15:时隔多日后回归,目前赛文速度110.97
  • Binder通信协议