日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門 >> MSP430有哪些可屏蔽中斷

MSP430有哪些可屏蔽中斷

關(guān)鍵字:MSP 中斷 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-19  瀏覽:7

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

現(xiàn)在我就談?wù)勱P(guān)于MSP430中斷的一些特性,主要是在項(xiàng)目經(jīng)歷中感覺比較有用的問(wèn)題,跟大家分享下。

第一,MSP430中斷的優(yōu)先級(jí)。

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

第二,MSP430中斷的響應(yīng)過(guò)程。

首先,當(dāng)然是中斷發(fā)生對(duì)應(yīng)的標(biāo)志為置1。這個(gè)時(shí)候的過(guò)程我詳述下,其實(shí)是翻譯的用戶手冊(cè)但是還是了解下好。

1. CPU會(huì)執(zhí)行完當(dāng)期的指令。

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

3. 狀態(tài)寄存器SR壓棧。

4. 選擇最好優(yōu)先級(jí)的中斷進(jìn)行服務(wù)。

5. 單源中斷的中斷標(biāo)志位會(huì)被自動(dòng)清零,這個(gè)地方需要小心下P1,P2這樣的中斷標(biāo)志位不會(huì)自動(dòng)清零,因?yàn)镻1、P2的IO中斷屬于多源中斷,就是說(shuō)P1或者P2的8個(gè)IO對(duì)應(yīng)到了一個(gè)中斷向量上,單片機(jī)知道是P1或者P2發(fā)生了中斷,無(wú)論是P1的哪一個(gè)IO發(fā)生的都會(huì)指向P1的中斷向量,P2也是一樣的,所以需要在代碼中手動(dòng)清零。

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

7. 中斷向量被裝載到PC,開始執(zhí)行中斷服務(wù)函數(shù)。

以上是整個(gè)中斷的接收過(guò)程,比較重要的地方我用彩色字體標(biāo)出了。

中斷返回就相對(duì)簡(jiǎn)單些,中斷服務(wù)函數(shù)會(huì)由RETI這條指令返回,SR被彈出,單片機(jī)恢復(fù)到中斷前的狀態(tài),PC也被彈出,繼續(xù)執(zhí)行指令。

第三,開中斷和中斷服務(wù)函數(shù)。

這個(gè)是讓我在項(xiàng)目中糾結(jié)過(guò)的地方,也請(qǐng)各位小心。

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

在SPI的接收中斷被使能,單片機(jī)一旦發(fā)現(xiàn)SPI接收標(biāo)志置位,就會(huì)裝載中斷向量,但是我們?nèi)绻麤]有用到SPI的接收中斷,會(huì)怎樣呢?由于沒用到,所有就沒有寫SPI接收中斷的服務(wù)函數(shù),此時(shí)中斷向量里指向中斷服務(wù)函數(shù)地址值是啥?是全0。CPU從0-01FFh取指令,只會(huì)發(fā)生一件事。PUC,上電清零。接著PC會(huì)裝載0xFFFE中斷向量的內(nèi)容,也就是復(fù)位向量,程序會(huì)跳轉(zhuǎn)到給IAR我們做的啟動(dòng)代碼。程序再往下執(zhí)行會(huì)執(zhí)行到我們編寫的代碼的main()的第一句。這樣悲劇就誕生了,蕩機(jī)了!!!!

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

以上是我在430中斷使用中的一些經(jīng)驗(yàn),希望對(duì)各位有用!

編輯:admin  最后修改時(shí)間:2018-05-19

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

泽州县| 穆棱市| 台东县| 华宁县| 纳雍县| 扎赉特旗| 兰考县| 额济纳旗| 西青区| 保山市| 辰溪县| 柘城县| 启东市| 宁夏| 平凉市| 金寨县| 灵石县| 钟祥市| 定兴县| 邵东县| 宣化县| 北宁市| 北宁市| 即墨市| 湘潭市| 安龙县| 屯留县| 沭阳县| 内江市| 青岛市| 荣昌县| 麻阳| 晋州市| 大庆市| 怀远县| 昌都县| 阿拉善左旗| 乐东| 芦山县| 平和县| 新乐市|