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

stm32 挂死定位(死循环)

1,调式程序时先看初始化和轮询点灯流程,如果灯没有闪烁则表明程序进入了死循环。

2,程序调式进入调式debug接口;

3,打断点依次运行;

4,查看寄存器;

 LR在异常后通常为0xFFFFFFFx,指示异常前的返回地址。根据LR的ReturnStack判断PSP或MSP,找到栈顶获取返回地址,从而追溯到异常发生前的代码位置.

程序异常后 LR会是以下的一种。

5,dissassemly进入查看反汇编; 

当进入中断时,CPU依次将xPSR,PC(Return Address),LR,R12,R3-R0压入堆栈。

如果进入了HardFault中断,LR寄存器的值为0xFFFFFFxx;此时看SP寄存器的值;SP寄存器是RAM的某个地址。

0x08000735查看程序挂死位置。

HardFault属于异常,所以出现HardFault,挂死原因。

/*** @brief  This function handles Hard Fault exception.***/

void HardFault_Handler(void)
{
    /* Go to infinite loop when Hard Fault exception occurs */
    while (1)
    {

    }
}


http://www.kler.cn/a/382098.html

相关文章:

  • ECharts关系图-关系图11,附视频讲解与代码下载
  • aws(学习笔记第十九课) 使用ECS和Fargate进行容器开发
  • iterm2 focus时灰色蒙层出现的解决办法
  • 0.gitlab ubuntu20.04 部署问题解决
  • 31.设计模式
  • 时空信息平台架构搭建:基于netty封装TCP通讯模块(IdleStateHandler网络连接监测,处理假死)
  • 【LeetCode】【算法】160.相交链表
  • 微信小程序寓言童话创作APP设计与实现
  • mysql error:1449权限问题 及 用户授权
  • 备战百天,准备机考【机考笔记】
  • Spring MVC 入门案例:开启 Web 开发之旅
  • http-server:Node.js下的轻量级静态服务器工具
  • SpringBoot配置Rabbit中的MessageConverter对象
  • 【spark面试题】RDD和DataFrame以及DataSet有什么异同
  • 链表-单链表
  • [MySQL]DCL语句
  • 【UML】- 用例图(结合银行案例解释其中的奥义)
  • 蓝桥杯专项---一维前缀/差分巩固题目
  • 【5.9】指针算法-双指针解验证回文字符串 Ⅱ
  • PostgreSQL 学习笔记:PostgreSQL 主从复制
  • 【自用】fastapi教程第三节--响应与响应体
  • 智能化在线考试及数据可视化系统
  • C++ 之类和对象
  • 集智书童 | UniMatch V2 推进半监督语义分割极限,以更低训练成本实现更优的语义分割结果-建议收藏!
  • 【网络】数据链路层
  • 基于Qt的独立线程创建与多线程执行实验Demo