该博客文章以MKL15Z4系列单片机为例,参考文档均来自NXP官方提供的芯片用户手册和数据手册;所使用的的开发环境是MCUXpresso。
一、简单的介绍
首先请看两张截图:
一张是截取于单片机工程的驱动文件内容,另一张截取于芯片用户手册。通过对照我们不难发现标题中所说的NMI_Handler正是不可屏蔽中断,简称NMI。
在程序中NMI的实现函数也有定义,在芯片驱动函数中该函数是一个弱定义,表示允许用户在其他地方定义一个该函数,具体实现如下所示:
继续查看芯片用户手册,可以找到这样一句话,也是对NMI的解释:
看完这段话的解释似乎单片机有一个引脚能通过低电平触发NMI中断,于是我们就查一下有没有这个引脚,查找的结果如下图所示:
NMI对外的确有一个引脚与之相关联,该引脚的默认功能就是NMI。
总结以上信息,我们可以知道,当我们使用该引脚用作其它功能的时候,如果把NMI引脚在电路上接地,程序在启动的时候就会触发NMI中断,从而进入到NMI_Handler函数中去(如果是把该引脚复用为其它功能再输入低电平是不会触发NMI中断的)。
二、如何解决不能直接在NMI引脚上接地的问题
当我们