记一次解决HardFault_Handler

  今又一次遇到hardfault_handler。本来用的好好地程序在ina220里添加了一个电流传感器后突然出现这个问题。一开始打算按照网上的方法通过堆栈之类的东西来定位出错的代码,结果发现在进入中断时,我的LR寄存器内容与网络上显示的进入中断时情况不同,反而类似正常运行时的值。于是有抓到了大佬过来解惑。
在这里插入图片描述
  一开始请教大佬问进入中断后定位错误代码的方法,大佬平常使用的就是网络上最通用的方法,直接通过Call Stack Window 弹出“Call Stack + Locals”对话框。然后在对话框中右键选择“Show Caller Code”就能跳转到错误代码。但是这次的情况并不适用,因为对话框Call Stack + Locals对话框内容为空,一般情况下会有函数的调用情况,所以分析说在主函数时就进入了中断。
  于是在调试时直接在主函数里单步调试,最后发现是开始线程的时候出现了问题。(vTaskStartScheduler())这个函数表示开始运行FreeRTOS线程。所以说明是线程上的问题,再加上我现阶段唯一的更改是添加了一个电流传感器,所以去改大了这个线程的空间,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值