a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430有哪些可屏蔽中斷

MSP430有哪些可屏蔽中斷

作者: 時間:2013-01-24 來源:網絡 收藏

中斷很大程度上體現了一款單片機的性能,從這一點將在中斷方面做得很不錯,主要是提供了非常豐富的中斷源,基本的有,定時器中斷和一些接口中斷(SPI,UART,I2C)等等。

現在我就談談關于中斷的一些特性,主要是在項目經歷中感覺比較有用的問題,跟大家分享下。

第一,中斷的優先級。

MSP430支持中斷優先級,但是優先級的高低怎么獲知呢?它的用手手冊上有個很有意思的說法,我原文引用過來“The nearer a module is to the CPU/NMIRS, the higher the priority”,翻譯過來就是說離CPU/NMIRS越近,優先級就越高。那我們怎么知道那個模塊離CPU近啊,看datasheet給的框圖?總覺得這不可能讓一個做電子的人放心,比如框圖在中距CPU一樣進,那怎么區分呢?所以我們有另外一個更可靠的辦法,IAR為每一款型號的430都提供了對應的頭問題,只靠看中斷向量地址就可以知道了。430的中斷向量表從地址值0xFFC0開始至0XFFFF結束,一共有32個表項(每個中斷向量對應2byte),0XFFCO對應的中斷向量的優先級是最頂的,0XFFFE對應的中斷向量的優先級是最高的,也就是從0xFFCO開始至0xFFFF,32個中斷優先級由低至高。這樣就很容易弄清楚各中斷的優先級了。

第二,MSP430中斷的響應過程。

首先,當然是中斷發生對應的標志為置1。這個時候的過程我詳述下,其實是翻譯的用戶手冊但是還是了解下好。

1. CPU會執行完當期的指令。

2. 指向下一條指令的PC被壓棧。

3. 狀態寄存器SR壓棧。

4. 選擇最好優先級的中斷進行服務。

5. 單源中斷的中斷標志位會被自動清零,這個地方需要小心下P1,P2這樣的中斷標志位不會自動清零,因為P1、P2的屬于多源中斷,就是說P1或者P2的8個IO對應到了一個中斷向量上,單片機知道是P1或者P2發生了中斷,無論是P1的哪一個IO發生的都會指向P1的中斷向量,P2也是一樣的,所以需要在代碼中手動清零。

6. 狀態寄存器SR被清零,將會終止任何低功耗狀態,并且全局中斷使能被關閉(GIE)。這個地方與51很是有些不同,430響應了中斷后會關閉全局中斷使能,不會響應任何其他的中斷包括優先級高的,就是說默認狀態下是沒有中斷嵌套的,若用到中斷嵌套的話需要使用_EINT()打開全局中斷。

7. 中斷向量被裝載到PC,開始執行中斷服務函數。

以上是整個中斷的接收過程,比較重要的地方我用彩色字體標出了。

中斷返回就相對簡單些,中斷服務函數會由RETI這條指令返回,SR被彈出,單片機恢復到中斷前的狀態,PC也被彈出,繼續執行指令。

第三,開中斷和中斷服務函數。

這個是讓我在項目中糾結過的地方,也請各位小心。

MSP430一旦開了外設的中斷,比如SPI的接收中斷。

在SPI的接收中斷被使能,單片機一旦發現SPI接收標志置位,就會裝載中斷向量,但是我們如果沒有用到SPI的接收中斷,會怎樣呢?由于沒用到,所有就沒有寫SPI接收中斷的服務函數,此時中斷向量里指向中斷服務函數地址值是啥?是全0。CPU從0-01FFh取指令,只會發生一件事。PUC,上電清零。接著PC會裝載0xFFFE中斷向量的內容,也就是復位向量,程序會跳轉到給IAR我們做的啟動代碼。程序再往下執行會執行到我們編寫的代碼的main()的第一句。這樣悲劇就誕生了,蕩機了!!!!

所以我在這希望初學430的朋友對于中斷,未使用的就不要使能。使能的就一定要寫中斷服務函數,哪怕是空函數!



評論


相關推薦

技術專區

關閉