用过stm32的人应该会遇到过程序死机的情况吧,而且会发现会运行到void HardFaultException(void)这个handler这里。新手可能很难明白问题出现在哪里。 我在这里说说我遇到的情况,方便大家处理这种情况时有个思路。 我遇到的死机情况都是访问错误内存导致的。譬如说你定义了一个数组:int array[3],count=0; 你在程序中总是运行count++;而没有对count的值就行限制,结果count>=3;那么你访问array数组时用 array[count];那么程序就会出错,然后就会跑到void HardFaultException(void)这里。 我遇到的运行到void HardFaultException(void)的情况几乎都是类似的情况导致的。 所以一旦运行到void HardFaultException(void),首先要检查的就是是否出现访问内存的错误。 还有的就是所有被除能的fault都会上访成为hardfault MemManage fault 所以上面的这些fault如果被除能了就会上访成为hardfault |
|