分析出现HardFault_Handler\提示的其中本人遇到比较多的一个情况

不知道大家在编写单片机时候有没有遇到一个硬件错误,也就是HardFault_Handler\,这个错误我遇到过好几次,一般来说这种错误有几种情况会出现,比如数据溢出或者内存地址错误重复有关,而本人遇到最多的情况就是数据溢出导致出现这种错误。所以来讲一下我自己遇到的这个错误并解决的例子分析。

像一般遇到这种的,往往你去Debug调试时候往往程序会停在B.这里,你停止之后像keil会跳到相应位置提示你,你的程序在哪里卡住。如该错误一般如下提示:

HardFault_Handler\
                PROC
                EXPORT  HardFault_Handler         [WEAK]
                B       .

而上面我也讲过,我遇到最多这种情况是因为数据溢出导致的,比如说减法运算成负数,将一个无符号数减至负数运算就会导致程序出错停止,就是因为负数如果按照无符号算会很大,超出了原来的数据范围,自然数据就会溢出。举个例子形象一点:

//错误情况下:
unsigned char i ;
i = 2;
if(1)
{
	i = i - 3;  //像这种情况下,因为i=2,减去3肯定会负数,当时是因为i为无符号,所以i-3会很大
}

//正确不会溢出情况下:
unsigned char i ;
i = 2;
if(1&&(i>=3))   //加上这个条件就不会出现i-3会负数的情况,所以就不会溢出
{
	i = i - 3;  //想这种情况下,因为i=2,减去3肯定会负数,当时是因为i为无符号,所以i-3会很大
}

所以解决方法就是:如果出现这种提示硬件中断错误,可以去查看一下自己的程序有没有哪里可能造成数据溢出等情况,有可能是因为这种情况,一般比较常见。

好了,今天的例子就分享到这里了~

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞和收藏,谢谢~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OMGMac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值