【玩转STM32】:Default_Handler问题

发布者:yunhui最新更新时间:2025-02-05 来源: jianshu关键字:STM32  Default_Handler  调试代码 手机看文章 扫描二维码
随时随地手机看文章

记录代码进入Default_Handler错误的解决办法

1 问题表述

  • 在一次调试代码的时候,发现代码卡死在启动文件 startup_stm32l431xx_.s 的355行,即 B. 处

  • B.是汇编代码,B:跳转到一个标号,这里跳转到一个‘.’,即表示无限死循环

  • 通过在Debug窗口可以定位到,程序是进入Default_Handler错误

image

2 问题分析

  • 使用某个外设的时候,开启了某个中断,但是又忘记编写配套的中断服务程序或者函数名写错,那当中断来临的时,程序就会跳转到启动文件预先写好的空的中断服务程序中,并且在这个空函数中无线循环,即程序就死在这里

  • 在启动文件里面已经帮我们写好所有中断的中断服务函数,跟我们平时写的中断服务函数不一样的就是这些函数都是空的,即虚函数,真正的中断服务程序需要我们在外部的 C 文件里面重新实现,这里只是提前占了一个位置

image

  • 知道了这些基础知识,在重新检查代码时候,发现在串口驱动函数处未使用DMA,但开启了DMA中断,却没有中断服务函数,导致了Default_Handler错误

3 总结

在开启了某个中断,但是又忘记编写配套的中断服务程序或者函数名写错,代码会进入Default_Handler错误,即 B. 死循环

关键字:STM32  Default_Handler  调试代码 引用地址:【玩转STM32】:Default_Handler问题

上一篇:STM32 LL库串口中断
下一篇:STM32 GPIO复用及重映射

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved