本文主要用于解决在从keil导入代码后,运行时hardfault的问题。
问题排查
进行Debug后发现进入hardfault时候,LR寄存器数值为0xFFFF FFF1,基本定位为中断相关问题导致的。
问题原因
中断向量表配置问题。
我们移植完之后架构基本是这样的:
在Cortex_M_Startup.s文件中相关的中断向量配置如下:
很明显缺少很多我们开发时候需要的中断句柄,我试过在这里添加用到的中断句柄,发现没什么用,还是会进hardfault。
解决办法
导入参考工程进行对比
发现这里的startup.s文件和我们直接导入工程是不一样的,并且多了一个Vectors.s的文件,里面包含了我们需要的一些中断向量。
那么后面就很简单了,直接复制这2个文件到我们工程文件里,删除之前的startup.s,并且导入新的startup.s和Vector.s,运行问题解决。
总结
猜测到了为中断向量配置问题,但是找原因找了很久,最后想到了demo!!!