stm32f030为啥从这里跳出会死在void HardFault_Handler(void)
这是什么原因导致的,虽然可以做到不用return跳出,但是不知道原因以后遇到同类型的问题很容易抓瞎,操作的是电容按键,智能锁来的,结构有3层,2,3层这么设置到是没问题,还是可以返回 ,但一返回第一层就死在void HardFault_Handler(void)了case 10:
{
delay_ms (10);//消抖
return;
}
进入HardFault_Handler的位置你是怎么算出来的?我记得网上面有,但是好像很复杂。。。还有,进入HardFault_Handler之后你可以用Keil和IAR里面的栈查看,可以知道从哪个函数里面进入HardFault_Handler的,还有。。进入HardFault_Handler一般就两个,一是数组或者栈溢出,一个就说中断函数未实现。。。找找这个原因就好了。。。 MrJiu 发表于 2019-1-11 16:49
进入HardFault_Handler的位置你是怎么算出来的?我记得网上面有,但是好像很复杂。。。还有,进入HardFault_ ...
就是在这里一到return就掉到HardFault_Handler
case 10:
{
delay_ms (10);//消抖
return;
}
楼主,你是单步调试定位到这个位置产生这个错误的吧!我之前也遇到到过类型的错误,你的硬件错误之前的那几个错误你排除了没有?出现了例如内存错误也会跳到硬件错误里面,建议你多检查一下你的代码使用到指针的地方,可能会有意想不到的发现。 HardFault_Handler出现的情况一般有两种:
一种是:数组越界
一种是:堆栈溢出,程序指针指飞
解决方案个人 建议:
在中断HardFault_Handler中的while()处打上断点,让程序执行到此处停止。
在keil中打开Call Stack + Locals,然后在HardFault_Handler上 右键选择:Show Caller Code,就会跳转到进入循环中断之前的函数处。仔细查看这部分函数被调用或者数组内存使用情况。
我去试试看
页:
[1]