[应用相关] 谈谈STM32(CM3)的Faults异常

[复制链接]
1582|34
 楼主| 有何不可0365 发表于 2021-1-31 23:23 | 显示全部楼层
状态寄存器(HFSR): 877336016cb422d9b0.png
 楼主| 有何不可0365 发表于 2021-1-31 23:23 | 显示全部楼层
4

如何应对Fault错误异常
在软件开发过程中,我们可以根据各种 fault错误 状态寄存器的值来判定程序错误,并且改正它们。下面给出了各种 faults 的常见诱因,以及应对攻略。

 楼主| 有何不可0365 发表于 2021-1-31 23:24 | 显示全部楼层
MemManage fault 状态寄存器提供的讯息: 919446016cb81805dd.png
 楼主| 有何不可0365 发表于 2021-1-31 23:24 | 显示全部楼层
总线 fault 状态寄存器提供的讯息: 781516016cb9ccf96c.png
 楼主| 有何不可0365 发表于 2021-1-31 23:25 | 显示全部楼层
用法 fault 状态寄存器提供的讯息:
101256016cbbfa9645.png
988026016cbc8dd1db.png
 楼主| 有何不可0365 发表于 2021-1-31 23:25 | 显示全部楼层
硬 fault 状态寄存器提供的讯息: 968096016cbf24b28e.png
 楼主| 有何不可0365 发表于 2021-1-31 23:26 | 显示全部楼层
常用应付Fault错误的方法:

1.恢复:在一些场合下,还是有希望解决产生 fault 的问题的。例如,如果程序尝试访问了协处理器,可以通过一个协处理器的软件模拟器来解决此问题——当然是以牺牲性能为代价的,要不然还要硬件加速干啥。
 楼主| 有何不可0365 发表于 2021-1-31 23:27 | 显示全部楼层
2.中止相关任务:如果系统运行了一个 RTOS,则相关的任务可以被终结或者重新开始。
 楼主| 有何不可0365 发表于 2021-1-31 23:27 | 显示全部楼层
3.复位:这也是最后一招。通过设置 NVIC“应用程序中断及复位控制寄存器”中的VECTRESET 位,将只复位处理器内核而不复位其它片上设施。取决于芯片的复位设计,有些CM3 芯片可以使用该寄存器的 SYSRESETREQ 位来复位。这种只限于内核中的复位不会复位其它系统部件。

 楼主| 有何不可0365 发表于 2021-1-31 23:28 | 显示全部楼层
当然,说了这么多,我们还是要从根源出发,平时保持良好的编程习惯,以及遵循必要的编程规范。
coshi 发表于 2021-2-5 23:43 | 显示全部楼层
确实可以总结归类
aoyi 发表于 2021-2-5 23:48 | 显示全部楼层
一共有多少种异常情况啊
drer 发表于 2021-2-5 23:52 | 显示全部楼层
这是哪个文档的内容啊 我去看看
gwsan 发表于 2021-2-5 23:55 | 显示全部楼层
图中的都是一些常见的诱因
kxsi 发表于 2021-2-5 23:56 | 显示全部楼层
如何推测是什么原因导致的呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部