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

关于HardFault的跳转方式和跳转前的动作

[复制链接]
gintoki_zero 提问时间:2023-12-16 14:28 / 未解决

想请问下论坛的各位大佬们,stm32有一个HardFault硬件错误,这个是当发生内存溢出等错误时硬件自动跳转到HardFault地址吗,还是有其他机制呢?还有一个问题就是进入HardFault前或者后是否会把stm32的中断都关掉?请大佬们解惑,谢谢

image.png

收藏 评论4 发布时间:2023-12-16 14:28

举报

4个回答
watershade 回答时间:2023-12-16 14:43:18

你发的那张NVIC的中断优先级表其实已经讲解的很清楚了。HARDFAULT是一个很高优先级的中断。而且是不可屏蔽的。

当发生比方说非法的地址访问的时候,就会出发HardFault中断。你看到的陷入到了hardfault函数里面可以认为是进入了hardfault的ISR。因为hardfault的isr是loop的所以,除了reset和nmi之外的中断都不可能被响应。

xmshao 回答时间:2023-12-17 11:32:51
整体上,产生Hardfault往往是因为发生了比较严重的程序非法运行,触发它比较常见的原因的确是
非法访问居多,比如数组越界访问、指针越位等,当然还有其它原因或机制,比方THUME \ARM运行状态选择不对,这点根本原因源于指令。其它还有可能是因为中断上访导致。HARDFAULT本身只是个优先级仅低于NMI和复位的异常,它不操作其它中断控制位,但由于其高优先级和它ISR处理方式或堵塞其它低优先级中断的响应,会给人感觉它能关闭其它中断。
gintoki_zero 回答时间:2023-12-18 09:29:40

watershade 发表于 2023-12-16 14:43
你发的那张NVIC的中断优先级表其实已经讲解的很清楚了。HARDFAULT是一个很高优先级的中断。而且是不可 ...

[md]了解了,谢谢大佬

gintoki_zero 回答时间:2023-12-18 09:30:14

xmshao 发表于 2023-12-17 11:32
整体上,产生Hardfault往往是因为发生了比较严重的程序非法运行,触发它比较常见的原因的确是
非法访问居多 ...

了解了,谢谢大佬

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