怎么禁用KE02的NMI功能

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

怎么禁用KE02的NMI功能

1,350 Views
gengxintian
Contributor I

我先需要将KE02的 PTB4引脚用作普通的GPIO ,想把这个引脚的NMI功能禁用了,不然当我这两个引脚接低电平后就立即进入中断,程序就不能运行了!

Labels (1)
0 Kudos
10 Replies

1,078 Views
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello ,

Which IDE do you use ?

About disable the NMI , you use this register :  System Options Register (SIM_SOPT)  -> NMIE bit      (KE02 reference manual  )

pastedImage_0.png


Have a great day,
Alice

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

1,078 Views
gengxintian
Contributor I

我再网上的这篇文章(ARM开发工具专版-如何在IAR、Keil和Codewarrior中禁止掉Kinetis的NMI脚-爱板网论坛 - 手机版 - 电子工程师学习交流园地)中有关于禁止掉NMI功能的介绍,但是我在我的

keil 的 配置向导 configuration wizard中Flash Option Register(FOPT)里面没有内容

未命名.bmp

0 Kudos

1,078 Views
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello,

(1) 我查看了您参考的这篇文章,文章是真对kinetis K 系列芯片, K 和KE 系列的内核都是不同的。

从KE 系列的手册中可以看出,在FLASH Option Register 寄存器中,没有说有disable NMI 功能

pastedImage_0.png

(2)禁止NMI ,硬件方面上电前必须上拉一个电阻将其拉高。

希望我的回答对您有帮助

Alice

1,078 Views
gengxintian
Contributor I

呵呵 谢谢 是的 正如你所说的在FOPT中我也没找到禁止NMI的内容,不过我的问题已经解决 ,NMI也是中断之一,我采用的方法是重新做了一个NMI的中断服务函数在中断服务函数中将NMI给禁止了,不知道有没有问题啊,反正现在程序运行了一段时间还没问题

void NMI_Isr(void)

{

  SIM->SOPT&=~SIM_SOPT_NMIE_MASK;

  return;

}

0 Kudos

1,078 Views
gengxintian
Contributor I
0 Kudos

1,078 Views
gengxintian
Contributor I

但是我安照上面操作后上电过程中PTB4若果为低电平程序仍然不能运行,一直进入default_isr()

0 Kudos

1,078 Views
gengxintian
Contributor I

你好 

你说的这个(SIM_SOPT)  -> NMIE bit我已经试过了我的方法是:

在sysinit中将sSIMConfig.sBits.bDisableNMI=ENABLE;这样在函数SIM_Init(&sSIMConfig); 中就可以将

(SIM_SOPT)  -> NMIE bit置0

0 Kudos

1,078 Views
gengxintian
Contributor I
0 Kudos

1,078 Views
gengxintian
Contributor I

我用的 IDE  keil uVsion 5。

我用这个寄存器试了 Register (SIM_SOPT)  -> NMIE bit  但是不管用!!!只有当PTB4脚上电时为高电平这时候程序能正常启动运行,程序正常运行后再将PTB4改为低电平就正常了,但是如果PTB4上电时为低电平程序就一直进中断

void default_isr(void)

0 Kudos

1,078 Views
gengxintian
Contributor I

我的程序是在void sysinit (void)中将sSIMConfig.sBits.bDisableNMI=ENABLE;这样进入 SIM_Init(&sSIMConfig);      这里后

if(pConfig->sBits.bDisableNMI)

    {

        u32Sopt &= ~SIM_SOPT_NMIE_MASK;       

    }

就应该可以把NMI禁止掉了 ,但是必须在KE02上电前PTB4为高电平才可以正常运行到这里,否则每次上电就直接进入中断不能正常运行程序,我在网上见到一个文章(ARM开发工具专版-如何在IAR、Keil和Codewarrior中禁止掉Kinetis的NMI脚-爱板网论坛 - 手机版 - 电子工程师学习交流园地)说可以在FOPT中把NMI 禁用了, 我的KEIL的 configuration wizard中FOPT中没内容不能展开

0 Kudos