【玩转STM32】:Default_Handler问题

本文讲述了在STM32开发中遇到的Default_Handler错误,主要原因是忘记编写或错误配置DMA中断服务程序。当中断发生且无对应处理函数时,程序会陷入无限循环。解决方法是检查并添加正确的中断服务函数。
摘要由CSDN通过智能技术生成

【玩转STM32】:Default_Handler问题

https://zhuanlan.zhihu.com/p/349579399

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

1 问题表述
在一次调试代码的时候,发现代码卡死在启动文件 startup_stm32l431xx_.s 的355行,即 B. 处
B.是汇编代码,B:跳转到一个标号,这里跳转到一个‘.’,即表示无限死循环
通过在Debug窗口可以定位到,程序是进入Default_Handler错误

2 问题分析
使用某个外设的时候,开启了某个中断,但是又忘记编写配套的中断服务程序或者函数名写错,那当中断来临的时,程序就会跳转到启动文件预先写好的空的中断服务程序中,并且在这个空函数中无线循环,即程序就死在这里
在启动文件里面已经帮我们写好所有中断的中断服务函数,跟我们平时写的中断服务函数不一样的就是这些函数都是空的,即虚函数,真正的中断服务程序需要我们在外部的 C 文件里面重新实现,这里只是提前占了一个位置

知道了这些基础知识,在重新检查代码时候,发现在串口驱动函数处未使用DMA,但开启了DMA中断,却没有中断服务函数,导致了Default_Handler错误
3 总结
在开启了某个中断,但是又忘记编写配套的中断服务程序或者函数名写错,代码会进入Default_Handler错误,即 B. 死循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值