首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Cortex-M3和Cortex-M4 Fault异常应用(5)

Cortex-M3和Cortex-M4 Fault异常应用(5)

3.2.2 SCB->HSFR寄存器
SCB->HSFR寄存器提供关于激活硬Fault处理程序的事件的信息,写入1清零相应位。


名称
描述
[31]
DEBUGEVT
硬Fault因调试事件产生,保留供调试使用。对寄存器执行写操作时,必须向该位写入0;否则,该行为不可预知。
[30]
FORCED
指示硬Fault是否由上访产生,非硬Fault的处理程序无法执行时,会上访成硬Fault。
0:硬Fault不是因为非硬Fault上访产生的
1:硬Fault是通过非硬Fault上访产生的。
当该位设为1时,硬Fault处理程序必须读其他Fault状态寄存器以找出Fault原因。
[29:2]
-
保留
[1]
VECTTBL
指示一个在异常处理过程中读向量表而引起的总线Fault:
0:读向量表未引起总线Fault
1:读向量表引起了总线Fault。
这一错误通常情况下都由硬Fault处理程序来处理。
[0]
-
保留

3.2.3 SCB->MMFAR和SCB->BFAR寄存器
      为了确定产生了哪个Fault异常以及什么原因引起的Fault异常,你需要检测Fault状态寄存器。
      如果SCB->CFSR寄存器的BFARVALID位有效(为1),则SCB->BFAR寄存器的值表示引起总线Fault的内存地址。
      如果SCB->CFSR寄存器的MMFARVALID位有效(为1),则SCB->MMFAR寄存器的值表示引起存储器管理Fault的内存地址。
继承事业,薪火相传
返回列表