找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2708|回复: 7
收起左侧

stm32单片机程序跑几次就死机,所有寄存器值清0 怎么解决

[复制链接]
ID:302293 发表于 2022-3-17 11:01 | 显示全部楼层 |阅读模式
      所有寄存器值清0了,怎么解决死机
死机.PNG
回复

使用道具 举报

ID:1009400 发表于 2022-3-17 16:15 | 显示全部楼层
排查法,在主程序中一个一个放开你的程序,看看添加哪一段出现死机现象,如果是跑了很多个小时才出现死机,肯定之前的备份程序有没死机的,进行对比
回复

使用道具 举报

ID:302293 发表于 2022-3-17 18:49 | 显示全部楼层
HardFault_Handler 怎么定位到函数中
回复

使用道具 举报

ID:139866 发表于 2022-3-17 19:05 | 显示全部楼层
在HardFault_Handler的while(1)那里打断点,当程序停止时,查看汇编代码,看看上一条运行的是什么代码,或者“Call Stack Window”弹出“Call Stack + Locals”对话框。然后在对话框中右键选择“Show Caller Code”,就会跳转到出错之前的函数处,一般这个错误跟内存有关,看看你的数组定义或者调用的时候有没有问题
回复

使用道具 举报

ID:302293 发表于 2022-3-18 08:32 | 显示全部楼层
  出错的地方会显示,蓝色小箭头是吧
回复

使用道具 举报

ID:302293 发表于 2022-3-30 09:53 | 显示全部楼层
天ノ忆 发表于 2022-3-17 19:05
在HardFault_Handler的while(1)那里打断点,当程序停止时,查看汇编代码,看看上一条运行的是什么代码,或 ...

死机怎么定位到出错处
回复

使用道具 举报

ID:775776 发表于 2022-3-30 14:00 | 显示全部楼层
暂停 一下看看程序停在 哪儿 一般都是越界闹的
回复

使用道具 举报

ID:883242 发表于 2022-3-30 17:17 | 显示全部楼层
不像是软件问题,如果软件出问题了,会进入各种fault向量,R14(LR)指示的是出错的原始位置。现在所有寄存器都是零,软件问题做不到这一点,一定是硬件问题,比如PCB画的稀巴烂,没有电源去耦电容等等……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表