ceiven 发表于 2020-11-23 10:26:30

求助:程序进入HardFault硬件中断中

程序运行时会莫名的进入HardFault硬件中断中,尝试了一周的时间,试过以下方法始终不能找到问题出在哪里,希望有人能指导下:1.换硬件,依然出现,可以排除硬件自身原因;
2.在代码中加入nop()问题消失,再加一个nop()问题又出现;
3.将代码中一个计数的变量判断条件>4000改成>4001问题消失,改回4000问题又出现;
4.程序中用到了AD中断,定时器中断,串口中断,在进入HardFault后这些中断还在正常运行,可以排除是这些中断导致进入HardFault;
一周尝试下来,确定的现象就是将代码改动一下问题就会消失或者重新出现,但是编译大小都是55KB左右,均在64KB以内,不会超出,不知你们有没有遇到相似的情况呢? 或者能否提供点其他方向上的尝试?非常感谢
备注:芯片是f030,用标准库开发

songshiqun2010 发表于 2020-11-23 11:41:28

之前写过一个关于hardfault诊断的帖子,可以按步做下实验

https://www.stmcu.org.cn/module/forum/thread-621377-1-1.html

陌路夕颜 发表于 2020-11-23 13:11:59

STM32出现硬件错误可能有以下原因:
      (1)数组越界操作;
      (2)内存溢出,访问越界;
      (3)堆栈溢出,程序跑飞;
      (4)中断处理错误;
[*]void HardFault_Handler(void)


[*]

{


[*]

/* Go to infinite loop when Hard Fault exception occurs */


[*]

        volatile int a = 1;


[*]

        a++;


[*]

//while (1);


[*]    }

[*]然后在a++处打断点,这样一旦发生hardFault就会进入该断点,然后我们可以使用单步调试,下一步就会跳出该函数,返回调用HardFault的地方。这样就定位到了错误处


页: [1]
查看完整版本: 求助:程序进入HardFault硬件中断中