`
anlx27
  • 浏览: 491838 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

stm32 void HardFaultException(void)

阅读更多

今天调试的时候突然发现程序总是抛出这个异常

 

void HardFaultException(void)

{

while(1);

}

 

网上看见一篇文章:

 

我遇到的死机情况都是访问错误内存导致的。譬如说你定义了一个数组: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,MPU 访问犯规以及访问非法位置
总线   fault 总线错误(预取流产(Abort)或数据流产)
用法(usage)  Fault

所以上面的这些fault如果被除能了就会上访成为hardfault

 

摘自:http://blog.sina.com.cn/s/blog_69871f290100jrwa.html

 

而我的错误就比较低级了,是因为我将一个开发板(核心芯片stm32103VC)上的程序放到另一块开发板(核心芯片stm32103ZET6),之前没有检查芯片选择以及相关设置。其实也是内存访问错误吧。

 

如果你想在线跟踪调试,在换开发板后你至少要做的检查是

 

第一 器件选择



 

 

 

第二 仿真设置



 

 

  • 大小: 28.4 KB
  • 大小: 25.4 KB
  • 大小: 13 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics