为什么每次进入Fault的时候,都会进入HardFault

因为系统Handler控制及状态寄存器没有设置,使用的是默认值,见下图:


  所以,即使发生了用法,总线或存储器管理Fault,由于其没使能,也不能进入其异常处理函数中,最后系统将其上访成     HardFault,所以最后看的现象是每次的Fault都是HardFault引起的一样。但是,HardFault状态寄存器(HFSR)中提供了状态指示,通过它我们可以知道到底是谁真正引起Fault的源头,见下图:

    

    当30bit为1说明是总线,存储器管理或用法上访的结果导致的,到底是谁产生的将读各自的状态寄存器方可确定,见下图:

    

猜你喜欢

转载自blog.csdn.net/zhuangyongkang/article/details/80634706