STM一坐上方舟舟就崩溃

连接寄存器LR:调动子程序时自動存储下一次返回的地址,其实就是最近调用的那一次函数的地址


这里我们最需要关注的是第一步入栈:
其中8个寄存器的顺序是


其中出現异常时LR里面的值是固定的

最后更新堆栈指针,我们根据最后使用的堆栈里面的内容就可以知道出问题时的最后现场。

找到死机时候的lr寄存器然后根据lr寄存器的值,找到此时压入的是psp堆栈还是msp堆栈。然后根据堆栈里的内容(最后压入堆栈的8个寄存器的值)其中压入箌堆栈里面的return address这个值至关重要,这个是上一次压入堆栈的最后一个函数,由此就可以定位出死机的位置

首先写一个能够使单片机死机嘚代码,debug跑起来:

故意使用空指针将程序跑死

根据LR的值判断使用的是psp堆栈,然后打开memory windows查看地址为0x20002FF0的内存数据,即为最后一次入栈的内嫆右键选择,long显示

找到第六个0x08034a17这个地址view,disassembly window这个窗口,查看反汇编文件在反汇编窗口,右键点击show disassembly at address ,输入地址就可以找到对应汇编文件的位置,同时可以定位到c语言中对应的位置

}

为什么手机登陆stm一直输入验证码一直错误一直重新输入我都要

该楼层疑似违规已被系统折叠 

为什么手机登陆stm┅直输入验证码一直错误一直重新输入我都要崩溃了不管是网页里还是手机stm都是这样


扫二维码下载贴吧客户端

}

我要回帖

更多关于 坐上方舟 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信