标题:
能媲美维多利亚的秘密---NMI的秘密
[打印本页]
作者:
51黑电子爱好者
时间:
2016-4-12 16:20
标题:
能媲美维多利亚的秘密---NMI的秘密
hi 大家好
大秀场维多利亚的秘密大家就听得多,但是NMI的秘密,您又知多少呢?
come on 北鼻!
看这里
NMI引脚是芯片的不可屏蔽中断引脚,当启用此功能时,NMI引脚低电平自动触发NMI中断,此中断优先级高于用户的所有中断优先级。
NMI引脚是芯片的不可屏蔽中断引脚,Kinetis芯片默认是使能NMI功能的(低电平有效),通常该引脚内部具有较小的内部上拉电阻,从大部分的应用来看,这个引脚的作用主要有两种,作为类似GPIO的中断引脚和作为低功耗唤醒引脚。
但是对于大部分应用来说,往往不需要这个引脚,特别是对于小封装的芯片,IO资源比较紧张,往往会考虑把这个复用功能的引脚用作GPIO, FTM等功能,但是由于这个引脚的特殊性(默认使能了NMI中断功能),往往会对应用带来麻烦。此处举例子来说明。 如果把这个引脚配置成GPIO输入用于检测外部按键输入,默认状态下拉到GND,原本打算在程序中把NMI功能Disable掉,配置成GPIO功能,但事实情况是还未等程序执行到配置该引脚到GPIO功能时,由于外部接低,已经导致芯片进入NMI中断,导致程序进入Default中断。更为烦恼的是,有些时候还会导致无法连接SWD下载,而且这个原因往往比较隐蔽,很难发现。所以,这个引脚如果复用为其它功能,一定要多加小心。
Kinetis提供了两种方法去Disable NMI的中断功能:第一种:在MCU复位结束之后,在main函数中把该引脚配置成其它功能,等同于去使能NMI功能;第二种:在MCU复位之前Disable,对于大部分的Kinetis芯片来说,其工作原理是,MCU在处于复位状态时会把位于0x40D的flash nonvolatile option 配置字节的内容拷贝到FTFA_FOPT寄存器中。关于FTFA_FOPT中NMI的定义如下图:
在Keil工程下禁用NMI功能可以直接通过修改启动文件(.s)文件中flash配置域中的FOPT由原来的0xFF改为0xFB即可。
需要注意的是,KE是飞思卡尔5V系列的ARM内核芯片,其主要定位在于兼容替代原有的S08系列MCU,所以在内部外设设计上与S08有点类似,同样在NMI的使用相对其他的Kinetis系列芯片也是有些特殊的,简而言之,KE的NMI只能在RESET后去Dsable其默认的NMI功能,而不能向KL那样在复位BOOT流程时去Disable其功能。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1