你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f030为啥从这里跳出会死在void HardFault_Handler(void)

[复制链接]
p13692166934 提问时间:2019-1-11 12:52 /
这是什么原因导致的,虽然可以做到不用return跳出,但是不知道原因以后遇到同类型的问题很容易抓瞎,操作的是电容按键,智能锁来的,结构有3层,2,3层这么设置到是没问题,还是可以返回 ,但一返回第一层就死在void HardFault_Handler(void)了
case 10:
   {
    delay_ms (10);//消抖
    return;
   }

收藏 评论5 发布时间:2019-1-11 12:52

举报

5个回答
MrJiu 回答时间:2019-1-11 16:49:12
进入HardFault_Handler的位置你是怎么算出来的?我记得网上面有,但是好像很复杂。。。还有,进入HardFault_Handler之后你可以用Keil和IAR里面的栈查看,可以知道从哪个函数里面进入HardFault_Handler的,还有。。进入HardFault_Handler一般就两个,一是数组或者栈溢出,一个就说中断函数未实现。。。找找这个原因就好了。。。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

p13692166934 回答时间:2019-1-11 17:23:03
MrJiu 发表于 2019-1-11 16:49
进入HardFault_Handler的位置你是怎么算出来的?我记得网上面有,但是好像很复杂。。。还有,进入HardFault_ ...

就是在这里一到return就掉到HardFault_Handler
case 10:
    {
     delay_ms (10);//消抖
    return;
    }
西奥伟 回答时间:2019-1-11 22:22:22
楼主,你是单步调试定位到这个位置产生这个错误的吧!我之前也遇到到过类型的错误,你的硬件错误之前的那几个错误你排除了没有?出现了例如内存错误也会跳到硬件错误里面,建议你多检查一下你的代码使用到指针的地方,可能会有意想不到的发现。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

miaomiaozheng 回答时间:2019-1-12 19:29:16
HardFault_Handler出现的情况一般有两种:
一种是:数组越界
一种是:堆栈溢出,程序指针指飞
解决方案个人 建议:
在中断HardFault_Handler中的while()处打上断点,让程序执行到此处停止。
在keil中打开Call Stack + Locals,然后在HardFault_Handler上 右键选择:Show Caller Code,就会跳转到进入循环中断之前的函数处。仔细查看这部分函数被调用或者数组内存使用情况。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

p13692166934 回答时间:2019-1-14 08:47:23
我去试试看

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版