
程序运行时会莫名的进入HardFault硬件中断中,尝试了一周的时间,试过以下方法始终不能找到问题出在哪里,希望有人能指导下:1.换硬件,依然出现,可以排除硬件自身原因; 2.在代码中加入nop()问题消失,再加一个nop()问题又出现; 3.将代码中一个计数的变量判断条件>4000改成>4001问题消失,改回4000问题又出现; 4.程序中用到了AD中断,定时器中断,串口中断,在进入HardFault后这些中断还在正常运行,可以排除是这些中断导致进入HardFault; 一周尝试下来,确定的现象就是将代码改动一下问题就会消失或者重新出现,但是编译大小都是55KB左右,均在64KB以内,不会超出,不知你们有没有遇到相似的情况呢? 或者能否提供点其他方向上的尝试?非常感谢 备注:芯片是f030,用标准库开发 |
https://www.stmcu.org.cn/module/forum/thread-621377-1-1.html
(1)数组越界操作;
(2)内存溢出,访问越界;
(3)堆栈溢出,程序跑飞;
(4)中断处理错误;
{
/* Go to infinite loop when Hard Fault exception occurs */
volatile int a = 1;
a++;
// while (1);