记录代码进入Default_Handler错误的解决办法
一、 问题表述
- 在一次调试代码的时候,发现代码卡死在启动文件 startup_at32f423xx_.s 的367行,即 B. 处
- B.是汇编代码,B:跳转到一个标号,这里跳转到一个‘.’,即表示无限死循环
- 通过在Debug窗口可以定位到,程序是进入Default_Handler错误
二、 问题分析
- 使用某个外设的时候,开启了某个中断,但是又忘记编写配套的中断服务程序或者函数名写错,那当中断来临的时,程序就会跳转到启动文件预先写好的空的中断服务程序中,并且在这个空函数中无线循环,即程序就死在这里
- 在启动文件里面已经帮我们写好所有中断的中断服务函数,跟我们平时写的中断服务函数不一样的就是这些函数都是空的,即虚函数,真正的中断服务程序需要我们在外部的 C 文件里面重新实现,这里只是提前占了一个位置
-
三、 总结
在开启了某个中断,但是又忘记编写配套的中断服务程序或者函数名写错,代码会进入Default_Handler错误,即 B. 死循环