stm32 void HardFaultException(void)

11 篇文章 0 订阅
6 篇文章 0 订阅

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

 

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),之前没有检查芯片选择以及相关设置。其实也是内存访问错误吧。

 

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

 

第一 器件选择



 

 

 

第二 仿真设置



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值