STM32程序进入hardfault_handler()

背景:

假期前一直在修改代码,没有边改边测。节后回来测试代码,发现程序上电后很快就进入hardfault_handler()中断。

导致程序反复复位。

查找原因:

在程序的_it.c文件里有几句代码,如果注释掉不执行,就不会进入hardfault_handler()中断。

很奇怪!

后来才发现,这几句代码里使用了一个变量,这个变量是在其他文件中定义的,所以在_it.c文件里是通过extern关键字引入的。引入的时候,后面的数据类型是uint16_t。而实际上变量定义的地方数据类型是uint8_t

这样一来,不就访问越界了吗!所以进入.hardfault_handler()。

要是keil软件能提示下这种错误就好了!

相关推荐
代码游侠2 小时前
学习笔记——时钟系统与定时器
arm开发·笔记·单片机·嵌入式硬件·学习·架构
CQ_YM2 小时前
ARM--SDK、led、beep与链接脚本
c语言·arm开发·嵌入式硬件·嵌入式
xiaobobo33302 小时前
EIDE的最新版本已经默认只支持debug调试STM32单片机了
stm32·单片机·debug·eide
small_planet2 小时前
通过mqtt使用webhook转发消息实现远程查看单片机日志
单片机·运维开发
Porco.w4 小时前
STM32之ESP8266
stm32·单片机·嵌入式硬件
梁洪飞6 小时前
noc 片上网络
linux·arm开发·嵌入式硬件·arm
日更嵌入式的打工仔6 小时前
RS-485通讯协议
笔记·嵌入式硬件
蓝桥_吹雪6 小时前
HAL库深入了解--STM32与GPIO
单片机·嵌入式硬件
嗯嗯=6 小时前
STM32单片机学习篇5
stm32·单片机·学习
不能跑的代码不是好代码6 小时前
STM32:LED共阴/共阳连接与GPIO控制逻辑的关系,如何实现电平转换
stm32·单片机·嵌入式硬件