背景:
假期前一直在修改代码,没有边改边测。节后回来测试代码,发现程序上电后很快就进入hardfault_handler()中断。
导致程序反复复位。
查找原因:
在程序的_it.c文件里有几句代码,如果注释掉不执行,就不会进入hardfault_handler()中断。
很奇怪!
后来才发现,这几句代码里使用了一个变量,这个变量是在其他文件中定义的,所以在_it.c文件里是通过extern关键字引入的。引入的时候,后面的数据类型是uint16_t。而实际上变量定义的地方数据类型是uint8_t
这样一来,不就访问越界了吗!所以进入.hardfault_handler()。
要是keil软件能提示下这种错误就好了!