日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

关于单片机中的NMI_Handler(不可屏蔽中断处理器)

發(fā)布時(shí)間:2024/6/21 综合教程 53 生活家
生活随笔 收集整理的這篇文章主要介紹了 关于单片机中的NMI_Handler(不可屏蔽中断处理器) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該博客文章以MKL15Z4系列單片機(jī)為例,參考文檔均來(lái)自NXP官方提供的芯片用戶手冊(cè)和數(shù)據(jù)手冊(cè);所使用的的開(kāi)發(fā)環(huán)境是MCUXpresso。

一、簡(jiǎn)單的介紹

  首先請(qǐng)看兩張截圖:

  一張是截取于單片機(jī)工程的驅(qū)動(dòng)文件內(nèi)容,另一張截取于芯片用戶手冊(cè)。通過(guò)對(duì)照我們不難發(fā)現(xiàn)標(biāo)題中所說(shuō)的NMI_Handler正是不可屏蔽中斷,簡(jiǎn)稱(chēng)NMI。

  在程序中NMI的實(shí)現(xiàn)函數(shù)也有定義,在芯片驅(qū)動(dòng)函數(shù)中該函數(shù)是一個(gè)弱定義,表示允許用戶在其他地方定義一個(gè)該函數(shù),具體實(shí)現(xiàn)如下所示:

  繼續(xù)查看芯片用戶手冊(cè),可以找到這樣一句話,也是對(duì)NMI的解釋?zhuān)?/p>

  看完這段話的解釋似乎單片機(jī)有一個(gè)引腳能通過(guò)低電平觸發(fā)NMI中斷,于是我們就查一下有沒(méi)有這個(gè)引腳,查找的結(jié)果如下圖所示:

  NMI對(duì)外的確有一個(gè)引腳與之相關(guān)聯(lián),該引腳的默認(rèn)功能就是NMI。

  總結(jié)以上信息,我們可以知道,當(dāng)我們使用該引腳用作其它功能的時(shí)候,如果把NMI引腳在電路上接地,程序在啟動(dòng)的時(shí)候就會(huì)觸發(fā)NMI中斷,從而進(jìn)入到NMI_Handler函數(shù)中去(如果是把該引腳復(fù)用為其它功能再輸入低電平是不會(huì)觸發(fā)NMI中斷的)。

二、如何解決不能直接在NMI引腳上接地的問(wèn)題

  當(dāng)我們需要在電路設(shè)計(jì)上接地的時(shí)候,需要關(guān)閉NIM中斷,接下來(lái)我們看下面截圖:

  這是FOPT(flash操作寄存器)寄存器的信息,默認(rèn)的時(shí)候NMI中斷是打開(kāi)的,如果想關(guān)閉該中斷需要我們把NMI_DIS位置0。我們都知道NMI屬于內(nèi)部中斷,通常芯片廠商只給我們提供了關(guān)閉外部中斷的API函數(shù),關(guān)閉內(nèi)部中斷的基本沒(méi)有提供,那么我們?cè)撊绾螌?xiě)該寄存器的值,從而關(guān)閉NMI中斷?因?yàn)榫幾g環(huán)境的不同,筆者這里只記錄自己使用的編譯環(huán)境關(guān)NMI中斷的方法,對(duì)于使用不同編譯環(huán)境的可以以此作為參考!

  查看官方提供的寄存器的定義文件中有沒(méi)有關(guān)于FOPT寄存器的定義;

  這里有一處有關(guān)于FOPT寄存器的定義,但是該地址是從0x40020000開(kāi)始的,而我使用的單片機(jī)FLASH的地址范圍是0x0--0x20000,很顯然該地址的內(nèi)容我們是沒(méi)法通過(guò)程序改的。繼續(xù)搜索后面還一處有關(guān)FOPT的定義,如下圖所示:

  當(dāng)看到這些內(nèi)容后,我知道這正是我要找的內(nèi)容,為了進(jìn)一步證明我的判斷我在用戶手冊(cè)上找到了這樣一些內(nèi)容,而這些描述和我在單片機(jī)的驅(qū)動(dòng)文件中看到的一段程序是相吻合的:

  我想此時(shí)就是你也應(yīng)該知道該如何屏蔽NMI中斷了,沒(méi)錯(cuò)就是直接更改如下圖圈起來(lái)的地方,把0xFFFFFFFE改成0xFFFFFBFE,即禁止NMI中斷。

  有些人可能會(huì)有疑問(wèn)為何不在main函數(shù)中操作寄存器更改?我只能說(shuō)這樣是行不通的,NMI屬于內(nèi)部中斷,并且默認(rèn)是使能的,當(dāng)你的NMI引腳接地,在你還沒(méi)進(jìn)入main函數(shù)中就會(huì)因檢測(cè)到低電平觸發(fā)NMI中斷,

#endif

總結(jié)

以上是生活随笔為你收集整理的关于单片机中的NMI_Handler(不可屏蔽中断处理器)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。