Cortex-M3和Cortex-M4 Fault异常应用(5)
- UID
- 1029342
- 性别
- 男
|
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的内存地址。 |
|
|
|
|
|