进入非法中断是因为CPU内核读到了非法指令,之所以会读到非法指令,一般是因为程序跑飞。
程序跑飞不一定是软件问题,硬件上的时钟电源不稳定也会导致这个问题。
1. 程序中是否使用了Delay_us()函数,如果是,是否已经copy到Ram中?
2. 检查是否开了足够的Stack空间?
3. 进入程序后,先单步运行,看看在哪条语句进入了非法中断?
4. 程序中是否有越界的情况?例如定义了一个50字节的数组,在赋值的时候,或者在程序运行中,超过了50,非法越界?
5. 检查中断是否正常?特别是中断号是否对应?