本帖最后由 labasi 于 2021-6-3 16:04 编辑
当程序报错时候 我们要定位到出错位置 才能更快的解决问题。
当程序进入hardfault中断算是一个比较麻烦的bug吧。本文把当程序进入硬错误中断时候的调试方式做个记录。
先说第一种方式,第一种方式比较简单,可以直接在hardfault中断中打个断点,当程序进入hardfault中断后,查看当前的栈调用情况。进而确定出错的函数,然后查看相应函数中错误。
模拟错误
这里我直接访问一个不存在地址让程序报个中断。
int main(void)
{
int i = 0;
for(i = 0; i < 100; i++)
{
*((unsigned int *)0x08100004) = 0x1;
}
while(1)
{
}
}
我用的是STM32F103VG的芯片,1MFlash,最大地址也就是0x08100000,所以当调试这段代码是,程序会进HardFault中断。
|