找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3776|回复: 0
打印 上一主题 下一主题
收起左侧

能媲美维多利亚的秘密---NMI的秘密

[复制链接]
跳转到指定楼层
楼主
ID:113517 发表于 2016-4-12 16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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其功能。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表