第九周CC2530中斷控制器原理(大課)_第1頁(yè)
第九周CC2530中斷控制器原理(大課)_第2頁(yè)
第九周CC2530中斷控制器原理(大課)_第3頁(yè)
第九周CC2530中斷控制器原理(大課)_第4頁(yè)
第九周CC2530中斷控制器原理(大課)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)原理與應(yīng)用單片機(jī)原理與應(yīng)用2高速時(shí)鐘的設(shè)置:高速時(shí)鐘的設(shè)置:如設(shè)置成如設(shè)置成32M時(shí)鐘步驟:時(shí)鐘步驟:1.選擇外部32MHz晶振作為主時(shí)鐘源;2.等待32MHz晶振穩(wěn)定 3.當(dāng)前系統(tǒng)時(shí)鐘不分頻如設(shè)置成如設(shè)置成8M時(shí)鐘步驟:時(shí)鐘步驟:將上述第3步中修改成:當(dāng)前系統(tǒng)時(shí)鐘4分頻串口控制器初始化編程:串口控制器初始化編程:1.設(shè)置為設(shè)置為32M時(shí)鐘;時(shí)鐘;2.選擇串口外設(shè)備用位置(位置選擇串口外設(shè)備用位置(位置1或者位置或者位置2););3.初始化初始化I/O口為外部設(shè)備;口為外部設(shè)備;4.設(shè)置中斷優(yōu)先級(jí);設(shè)置中斷優(yōu)先級(jí);5.選擇同步異步通信方式:選擇同步異步通信方式:UART方式方式6.設(shè)置波

2、特率(查表)設(shè)置波特率(查表) 串口發(fā)送:串口發(fā)送:查詢(xún)狀態(tài)位;或者通過(guò)中斷標(biāo)志位查詢(xún)狀態(tài)位;或者通過(guò)中斷標(biāo)志位 串口接收:串口接收:查詢(xún)狀態(tài)位;或者通過(guò)中斷標(biāo)志位查詢(xún)狀態(tài)位;或者通過(guò)中斷標(biāo)志位3本周教學(xué)主要內(nèi)容本周教學(xué)主要內(nèi)容 中斷概述 CC2530中斷原理(難點(diǎn)) CC2530中斷編程(重點(diǎn))4教學(xué)目標(biāo)教學(xué)目標(biāo) 理解中斷的概念、一般處理步驟;理解中斷的概念、一般處理步驟; 掌握掌握CC2530CC2530中斷原理中斷原理; ; 掌握掌握CC2530CC2530中斷編程步驟。中斷編程步驟。5CPU與外部設(shè)備之間數(shù)據(jù)傳送方式主要有以下幾種:(1)無(wú)條件傳送(適用設(shè)備類(lèi)型有限):適用于總是準(zhǔn)備好

3、的外設(shè))無(wú)條件傳送(適用設(shè)備類(lèi)型有限):適用于總是準(zhǔn)備好的外設(shè),如我如我們已經(jīng)們已經(jīng)通過(guò)實(shí)驗(yàn)使用了無(wú)條件傳送方式點(diǎn)亮發(fā)光二極管通過(guò)實(shí)驗(yàn)使用了無(wú)條件傳送方式點(diǎn)亮發(fā)光二極管;(2)查詢(xún)方式(浪費(fèi))查詢(xún)方式(浪費(fèi)cpu資源):傳送數(shù)據(jù)之前需要先查詢(xún)?cè)O(shè)備的狀態(tài)資源):傳送數(shù)據(jù)之前需要先查詢(xún)?cè)O(shè)備的狀態(tài),狀態(tài)滿(mǎn)足要求則傳送,否則等待,如我們用查詢(xún)方式使用串口;,狀態(tài)滿(mǎn)足要求則傳送,否則等待,如我們用查詢(xún)方式使用串口;(3)中斷方式:當(dāng)外設(shè)滿(mǎn)足傳送數(shù)據(jù)狀態(tài)時(shí)(如串口控制器的發(fā)送緩沖)中斷方式:當(dāng)外設(shè)滿(mǎn)足傳送數(shù)據(jù)狀態(tài)時(shí)(如串口控制器的發(fā)送緩沖區(qū)空或接收緩沖區(qū)慢)會(huì)向區(qū)空或接收緩沖區(qū)慢)會(huì)向cpu發(fā)出請(qǐng)求信號(hào),

4、強(qiáng)迫發(fā)出請(qǐng)求信號(hào),強(qiáng)迫cpu暫停暫?!笆诸^的工作手頭的工作”,轉(zhuǎn)去處理該外設(shè),完畢后再繼續(xù)原來(lái)的,轉(zhuǎn)去處理該外設(shè),完畢后再繼續(xù)原來(lái)的“工作工作”;(4)直接存儲(chǔ)器()直接存儲(chǔ)器(DMA)存?。ㄓ信d趣的可以自己可查閱相關(guān)資料)存?。ㄓ信d趣的可以自己可查閱相關(guān)資料)已經(jīng)實(shí)現(xiàn)已經(jīng)實(shí)現(xiàn)已經(jīng)實(shí)現(xiàn)已經(jīng)實(shí)現(xiàn)6 CPU在硬件上對(duì)中斷的支持:在硬件上對(duì)中斷的支持:(1)具有中斷請(qǐng)求輸入信號(hào)管腳;)具有中斷請(qǐng)求輸入信號(hào)管腳;(2)每執(zhí)行完一條指令都會(huì)檢測(cè)是否有中斷請(qǐng)求信號(hào);)每執(zhí)行完一條指令都會(huì)檢測(cè)是否有中斷請(qǐng)求信號(hào);主主程程序序斷點(diǎn)斷點(diǎn)繼繼續(xù)續(xù)執(zhí)執(zhí)行行主主程程序序響應(yīng)中斷請(qǐng)求響應(yīng)中斷請(qǐng)求返回主程序返回主程序中中

5、斷斷服服務(wù)務(wù)程程序序(1 1)中斷服務(wù)程序:中斷服務(wù)程序:CPUCPU響應(yīng)中斷后,轉(zhuǎn)去執(zhí)行相應(yīng)響應(yīng)中斷后,轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,該處理程序通常稱(chēng)之為中斷服務(wù)程序。的處理程序,該處理程序通常稱(chēng)之為中斷服務(wù)程序。(2 2)主程序:主程序:原來(lái)正常運(yùn)行的程序稱(chēng)為主程序。原來(lái)正常運(yùn)行的程序稱(chēng)為主程序。(3 3)斷點(diǎn):斷點(diǎn):主程序被斷開(kāi)的位置(或地址)稱(chēng)為斷點(diǎn)。主程序被斷開(kāi)的位置(或地址)稱(chēng)為斷點(diǎn)。(4 4)中斷源:中斷源:引起中斷的原因,或能發(fā)出中斷申請(qǐng)的引起中斷的原因,或能發(fā)出中斷申請(qǐng)的來(lái)源,稱(chēng)為中斷源。來(lái)源,稱(chēng)為中斷源。(5 5)中斷請(qǐng)求:中斷請(qǐng)求:中斷源要求服務(wù)的請(qǐng)求稱(chēng)為中斷請(qǐng)求中斷源要求服務(wù)

6、的請(qǐng)求稱(chēng)為中斷請(qǐng)求(或中斷申請(qǐng))。(或中斷申請(qǐng))。 7中斷響應(yīng)的一般過(guò)程中斷響應(yīng)的一般過(guò)程(1)中斷請(qǐng)求)中斷請(qǐng)求 當(dāng)外部設(shè)備就緒時(shí)會(huì)產(chǎn)生一個(gè)中斷請(qǐng)求信號(hào)加到當(dāng)外部設(shè)備就緒時(shí)會(huì)產(chǎn)生一個(gè)中斷請(qǐng)求信號(hào)加到CPU的中斷請(qǐng)求輸入端的中斷請(qǐng)求輸入端,即對(duì),即對(duì)CPU提出中斷請(qǐng)求。對(duì)于中斷請(qǐng)求信號(hào),需注意兩個(gè)問(wèn)題:提出中斷請(qǐng)求。對(duì)于中斷請(qǐng)求信號(hào),需注意兩個(gè)問(wèn)題:有效的中斷請(qǐng)求電平保持到被有效的中斷請(qǐng)求電平保持到被cpu發(fā)現(xiàn);發(fā)現(xiàn);當(dāng)當(dāng)cpu響應(yīng)請(qǐng)求后應(yīng)當(dāng)有效的請(qǐng)求電平去掉;響應(yīng)請(qǐng)求后應(yīng)當(dāng)有效的請(qǐng)求電平去掉;在使用中斷控制器時(shí)(大多數(shù)如此),在使用中斷控制器時(shí)(大多數(shù)如此),cpu的中斷響應(yīng)信號(hào)就能做到這的

7、中斷響應(yīng)信號(hào)就能做到這一點(diǎn),若自己構(gòu)成中斷請(qǐng)求硬件時(shí),需要注意以上兩個(gè)問(wèn)題;一點(diǎn),若自己構(gòu)成中斷請(qǐng)求硬件時(shí),需要注意以上兩個(gè)問(wèn)題;(2)中斷響應(yīng))中斷響應(yīng)CPU在每條指令執(zhí)行的最后一個(gè)時(shí)鐘周期監(jiān)測(cè)中斷請(qǐng)求輸入管在每條指令執(zhí)行的最后一個(gè)時(shí)鐘周期監(jiān)測(cè)中斷請(qǐng)求輸入管腳有無(wú)請(qǐng)求發(fā)生,腳有無(wú)請(qǐng)求發(fā)生, 而后決定是否對(duì)它做出響應(yīng)。而后決定是否對(duì)它做出響應(yīng)。(3)斷點(diǎn)保護(hù))斷點(diǎn)保護(hù)為了中斷處理完畢后為了能接著處理被中斷的事情,為了中斷處理完畢后為了能接著處理被中斷的事情,CPU硬件硬件需要對(duì)硬件現(xiàn)場(chǎng)進(jìn)行保護(hù)。需要對(duì)硬件現(xiàn)場(chǎng)進(jìn)行保護(hù)。8(4)中斷源識(shí)別)中斷源識(shí)別 當(dāng)有多個(gè)中斷源時(shí),一旦中斷請(qǐng)求發(fā)生,當(dāng)有多個(gè)

8、中斷源時(shí),一旦中斷請(qǐng)求發(fā)生,cpu須判斷是哪須判斷是哪一個(gè)中斷源提出請(qǐng)求。一般有兩種確定中斷源的方法:一個(gè)中斷源提出請(qǐng)求。一般有兩種確定中斷源的方法:a:軟件查詢(xún);軟件查詢(xún);b:中斷向量法;中斷向量法;(大多數(shù)如此)(大多數(shù)如此) 利用不同的中斷向量,從而確定是來(lái)自不同的中斷源。利用不同的中斷向量,從而確定是來(lái)自不同的中斷源。(5)中斷服務(wù))中斷服務(wù) 程序員所編寫(xiě)的中斷處理程序統(tǒng)稱(chēng)中斷服務(wù)程序,這也是程序員所編寫(xiě)的中斷處理程序統(tǒng)稱(chēng)中斷服務(wù)程序,這也是中斷處理需要程序員所做的主要工作;中斷處理需要程序員所做的主要工作;(6)斷點(diǎn)恢復(fù))斷點(diǎn)恢復(fù)(7)中斷返回)中斷返回9 中斷由中斷源引起,中斷源由

9、相應(yīng)的寄存器來(lái)控制。中斷由中斷源引起,中斷源由相應(yīng)的寄存器來(lái)控制。當(dāng)需要使用中斷時(shí),需配置相應(yīng)的中斷寄存器來(lái)開(kāi)啟當(dāng)需要使用中斷時(shí),需配置相應(yīng)的中斷寄存器來(lái)開(kāi)啟中斷,當(dāng)中斷發(fā)生時(shí)將跳入中斷服務(wù)函數(shù)中執(zhí)行此中中斷,當(dāng)中斷發(fā)生時(shí)將跳入中斷服務(wù)函數(shù)中執(zhí)行此中斷所需要處理的事件斷所需要處理的事件 。中斷源與中斷向量中斷源與中斷向量 l CC2530片內(nèi)具有一個(gè)中斷控制器,能夠同時(shí)對(duì)片內(nèi)具有一個(gè)中斷控制器,能夠同時(shí)對(duì)1818路中斷源路中斷源進(jìn)行管理進(jìn)行管理,每個(gè)中斷源都可以產(chǎn)生中斷請(qǐng)求,中斷請(qǐng)求可以,每個(gè)中斷源都可以產(chǎn)生中斷請(qǐng)求,中斷請(qǐng)求可以通過(guò)設(shè)置中斷使能通過(guò)設(shè)置中斷使能SFR寄存器的中斷使能位寄存器的

10、中斷使能位IEN0、IEN1或或IEN2使能或禁止中斷。使能或禁止中斷。10(1 1)當(dāng)調(diào)用中斷處理程序時(shí)會(huì)由硬件清除中斷;)當(dāng)調(diào)用中斷處理程序時(shí)會(huì)由硬件清除中斷;(2 2)表示還存在子級(jí)中斷)表示還存在子級(jí)中斷11我們已經(jīng)大致指導(dǎo)如何編寫(xiě)中斷處理程序了,但要保證讓中斷處理程序真正得到調(diào)我們已經(jīng)大致指導(dǎo)如何編寫(xiě)中斷處理程序了,但要保證讓中斷處理程序真正得到調(diào)用前,我們還得對(duì)中斷控制器進(jìn)行初始化,如何初始化?還得理解中斷信號(hào)從源頭用前,我們還得對(duì)中斷控制器進(jìn)行初始化,如何初始化?還得理解中斷信號(hào)從源頭如何一步步傳到如何一步步傳到CPUCPU的。的。1818路中斷總開(kāi)關(guān)路中斷總開(kāi)關(guān) 優(yōu)先級(jí)排隊(duì),優(yōu)

11、先級(jí)排隊(duì),得到第一名的將得到第一名的將會(huì)得到響應(yīng),多會(huì)得到響應(yīng),多個(gè)第一名則按順個(gè)第一名則按順序輪詢(xún)序輪詢(xún) 18 18路中斷分開(kāi)關(guān)路中斷分開(kāi)關(guān)帶陰影的標(biāo)志位帶陰影的標(biāo)志位會(huì)有硬件清除會(huì)有硬件清除12我們可以這樣認(rèn)為,當(dāng)發(fā)生了某個(gè)中斷:我們可以這樣認(rèn)為,當(dāng)發(fā)生了某個(gè)中斷:PC(PC(指令計(jì)數(shù)器指令計(jì)數(shù)器) )對(duì)應(yīng)的斷向量,對(duì)應(yīng)的斷向量,也就是說(shuō),也就是說(shuō),cpucpu將會(huì)執(zhí)行對(duì)應(yīng)的中斷向量處的指令。將會(huì)執(zhí)行對(duì)應(yīng)的中斷向量處的指令。- - 1212 - -1.中斷源與中斷向量中斷源與中斷向量 l 當(dāng)相應(yīng)的中斷源使能并發(fā)生時(shí),中斷標(biāo)志位將自動(dòng)置當(dāng)相應(yīng)的中斷源使能并發(fā)生時(shí),中斷標(biāo)志位將自動(dòng)置1,然后程

12、序跳往中斷服務(wù)程序的入口地址執(zhí)行中斷服務(wù)程序。然后程序跳往中斷服務(wù)程序的入口地址執(zhí)行中斷服務(wù)程序。待中斷服務(wù)程序處理完畢后,由硬件清除中斷標(biāo)志位待中斷服務(wù)程序處理完畢后,由硬件清除中斷標(biāo)志位 l 中斷服務(wù)程序的入口地址即中斷向量,中斷服務(wù)程序的入口地址即中斷向量,CC2530的的18個(gè)中個(gè)中斷源對(duì)應(yīng)了斷源對(duì)應(yīng)了18個(gè)中斷向量,中斷向量定義在頭文件個(gè)中斷向量,中斷向量定義在頭文件“ioCC2530.h”中中 13- - 1313 - -2.中斷優(yōu)先級(jí)中斷優(yōu)先級(jí) l 中斷優(yōu)先級(jí)將決定中斷響應(yīng)的先后順序,在中斷優(yōu)先級(jí)將決定中斷響應(yīng)的先后順序,在CC2530中分為六中分為六個(gè)中斷優(yōu)先組,即個(gè)中斷優(yōu)先組

13、,即IPG0IPG5,每一組中斷優(yōu)先組中有三個(gè),每一組中斷優(yōu)先組中有三個(gè)中斷源中斷源 142.中斷優(yōu)先級(jí)中斷優(yōu)先級(jí) 中斷優(yōu)先組的優(yōu)先級(jí)設(shè)定由寄存器中斷優(yōu)先組的優(yōu)先級(jí)設(shè)定由寄存器IP0和和IP1來(lái)設(shè)置。來(lái)設(shè)置。CC2530的優(yōu)的優(yōu)先級(jí)有先級(jí)有4級(jí),即級(jí),即03級(jí),其中級(jí),其中0級(jí)的優(yōu)先級(jí)最低,級(jí)的優(yōu)先級(jí)最低,3級(jí)的優(yōu)先級(jí)最高。級(jí)的優(yōu)先級(jí)最高。 l 其中其中X為六個(gè)中斷優(yōu)先組為六個(gè)中斷優(yōu)先組IPG0IPG5中的任何一個(gè)中的任何一個(gè) 。 設(shè)置設(shè)置IPG0優(yōu)先級(jí)最高優(yōu)先級(jí)最高IP1_IPG0 = 1;IP0_IPG0 = 1;15- - 1515 - -2.中斷優(yōu)先級(jí)中斷優(yōu)先級(jí) l 如果同時(shí)收到相同優(yōu)

14、先級(jí)或同一優(yōu)先級(jí)組中的中如果同時(shí)收到相同優(yōu)先級(jí)或同一優(yōu)先級(jí)組中的中斷請(qǐng)求時(shí),將采用輪流檢測(cè)順序來(lái)判斷中斷優(yōu)先斷請(qǐng)求時(shí),將采用輪流檢測(cè)順序來(lái)判斷中斷優(yōu)先級(jí)別的響應(yīng)級(jí)別的響應(yīng) 162.中斷優(yōu)先級(jí)中斷優(yōu)先級(jí) 例如:在中斷優(yōu)先級(jí)組例如:在中斷優(yōu)先級(jí)組IPG0中的中斷中的中斷RFERR、RF和和DMA的中斷優(yōu)先級(jí)是相的中斷優(yōu)先級(jí)是相同的,如果同時(shí)使用這三個(gè)同的,如果同時(shí)使用這三個(gè)中斷,就需要使用輪流探測(cè)中斷,就需要使用輪流探測(cè)順序來(lái)判斷哪一優(yōu)先級(jí)最高。順序來(lái)判斷哪一優(yōu)先級(jí)最高。由輪流探測(cè)順序表查得由輪流探測(cè)順序表查得RFERR中斷優(yōu)先級(jí)最高,中斷優(yōu)先級(jí)最高,RF中斷次之,中斷次之,DMA中斷與中斷與其他

15、兩個(gè)中斷相比中斷優(yōu)先其他兩個(gè)中斷相比中斷優(yōu)先級(jí)最低級(jí)最低 173.中斷處理過(guò)程中斷處理過(guò)程 l 中斷發(fā)生時(shí),中斷發(fā)生時(shí),CC2530硬件自動(dòng)完成以下處理:硬件自動(dòng)完成以下處理: u 中斷申請(qǐng):中斷源向中斷申請(qǐng):中斷源向CPU發(fā)出中斷請(qǐng)求信號(hào)(中斷申請(qǐng)一般需要在程發(fā)出中斷請(qǐng)求信號(hào)(中斷申請(qǐng)一般需要在程序初始化中配置相應(yīng)的中斷寄存器開(kāi)啟中斷)序初始化中配置相應(yīng)的中斷寄存器開(kāi)啟中斷) u 中斷響應(yīng):中斷響應(yīng):CPU檢測(cè)中斷申請(qǐng),把主程序中斷的地址保存到堆棧,轉(zhuǎn)檢測(cè)中斷申請(qǐng),把主程序中斷的地址保存到堆棧,轉(zhuǎn)入中斷向量入口地址入中斷向量入口地址 u 中斷處理:按照中斷向量中設(shè)定好的地址,轉(zhuǎn)入相應(yīng)的中斷服

16、務(wù)程序中斷處理:按照中斷向量中設(shè)定好的地址,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序 u 中斷返回:中斷服務(wù)程序執(zhí)行完畢后,中斷返回:中斷服務(wù)程序執(zhí)行完畢后,CPU執(zhí)行中斷返回指令,把堆執(zhí)行中斷返回指令,把堆棧中保存的數(shù)據(jù)從堆棧彈出,返回原來(lái)程序棧中保存的數(shù)據(jù)從堆棧彈出,返回原來(lái)程序 184.中斷編程中斷編程 l 中斷編程的一般過(guò)程如下中斷編程的一般過(guò)程如下 :l 中斷設(shè)置:根據(jù)外設(shè)的不同,具體的設(shè)置是不同的,一般中斷設(shè)置:根據(jù)外設(shè)的不同,具體的設(shè)置是不同的,一般至少包含啟用中斷至少包含啟用中斷 l 中斷函數(shù)編寫(xiě);這是中斷編程的主要工作,需要注意的是,中斷函數(shù)編寫(xiě);這是中斷編程的主要工作,需要注意的是,中斷函數(shù)

17、盡可能的減少耗時(shí)或不進(jìn)行耗時(shí)操作中斷函數(shù)盡可能的減少耗時(shí)或不進(jìn)行耗時(shí)操作 以以CC2530的外部中斷為例:的外部中斷為例: P0IFG = 0 x00;/P0中斷標(biāo)志清中斷標(biāo)志清0 P0INP &= 0X30; /P0.4有上拉、下拉能力有上拉、下拉能力 P0IEN |= 0 x30; /P0.4和和P0.5中斷使能中斷使能 PICTL|= 0X01; /P0.4和和P0.5,下降沿觸發(fā),下降沿觸發(fā) EA = 1; /開(kāi)中斷開(kāi)中斷 IEN1 |= 0X20; /端口端口0中斷使能中斷使能19- - 1919 - -4.中斷編程中斷編程 l 中斷編程的一般過(guò)程如下中斷編程的一般過(guò)程如下

18、:l CC2530所使用的編譯器為所使用的編譯器為IAR,在,在IAR編譯器中用關(guān)鍵字編譯器中用關(guān)鍵字_interrupt來(lái)定義一個(gè)中斷函數(shù)。使用來(lái)定義一個(gè)中斷函數(shù)。使用#progma vector來(lái)提供來(lái)提供中斷函數(shù)的入口地址,并且中斷函數(shù)沒(méi)有返回值,沒(méi)有函數(shù)參數(shù)中斷函數(shù)的入口地址,并且中斷函數(shù)沒(méi)有返回值,沒(méi)有函數(shù)參數(shù) #pragma vector = P0INT_VECTOR_interrupt void P0_ISR ( void) /中斷程序代碼中斷程序代碼204.中斷編程中斷編程 l 在中斷函數(shù)編寫(xiě)中,當(dāng)程序進(jìn)入中斷服務(wù)程序之后,需要執(zhí)行在中斷函數(shù)編寫(xiě)中,當(dāng)程序進(jìn)入中斷服務(wù)程序之后,

19、需要執(zhí)行以下幾個(gè)步驟以下幾個(gè)步驟 :u 將對(duì)應(yīng)的中斷關(guān)掉(不是必須的,需要根據(jù)具體情況來(lái)處理);將對(duì)應(yīng)的中斷關(guān)掉(不是必須的,需要根據(jù)具體情況來(lái)處理);u 如果需要判斷具體的中斷源,則根據(jù)中斷標(biāo)志位進(jìn)行判斷(例如所有如果需要判斷具體的中斷源,則根據(jù)中斷標(biāo)志位進(jìn)行判斷(例如所有I/O中中斷共用斷共用1個(gè)中斷向量,需要通過(guò)中斷標(biāo)志區(qū)分是哪個(gè)引腳引起的中斷)個(gè)中斷向量,需要通過(guò)中斷標(biāo)志區(qū)分是哪個(gè)引腳引起的中斷)u 清中斷標(biāo)志(不是必須的,清中斷標(biāo)志(不是必須的,CC2530中中斷發(fā)生后由硬件自動(dòng)清中斷標(biāo)志中中斷發(fā)生后由硬件自動(dòng)清中斷標(biāo)志位)位)u 處理中斷事件,此過(guò)程要盡可能的少耗時(shí)處理中斷事件,此

20、過(guò)程要盡可能的少耗時(shí)u 最后如果在第一步中關(guān)閉了相應(yīng)的中斷源,需要在退出中斷服務(wù)程序之前最后如果在第一步中關(guān)閉了相應(yīng)的中斷源,需要在退出中斷服務(wù)程序之前打開(kāi)對(duì)應(yīng)的中斷打開(kāi)對(duì)應(yīng)的中斷#pragma vector = P0INT_VECTOR/中斷函數(shù)入口地址中斷函數(shù)入口地址 _interrupt void P0_ISR(void)/定義一個(gè)中斷函數(shù)定義一個(gè)中斷函數(shù) P0IEN &= 0 x30;/關(guān)端口關(guān)端口P0.4、P0.5中斷中斷 if(P0IFG0)/判斷中斷發(fā)生判斷中斷發(fā)生 P0IFG = 0;/清中斷標(biāo)志清中斷標(biāo)志 /*中斷事件的處理中斷事件的處理*/ . . . . . .

21、. . . P0IEN |= 0 x30; /開(kāi)中斷開(kāi)中斷 21在設(shè)置在設(shè)置I/O口的中斷時(shí)必須要將其設(shè)置為輸入狀態(tài),通過(guò)外部信號(hào)的上升或下降口的中斷時(shí)必須要將其設(shè)置為輸入狀態(tài),通過(guò)外部信號(hào)的上升或下降沿觸發(fā)中斷。通用沿觸發(fā)中斷。通用I/O的所有的外部中斷共用一個(gè)中斷向量,根據(jù)中斷標(biāo)志的所有的外部中斷共用一個(gè)中斷向量,根據(jù)中斷標(biāo)志位來(lái)判斷是哪個(gè)引腳發(fā)生中斷位來(lái)判斷是哪個(gè)引腳發(fā)生中斷 通用通用I/O中斷寄存器有三類(lèi):中斷使能寄存器、中斷狀態(tài)標(biāo)志寄存器和中斷中斷寄存器有三類(lèi):中斷使能寄存器、中斷狀態(tài)標(biāo)志寄存器和中斷控制寄存器控制寄存器 中斷使能寄存器包括中斷使能寄存器包括IENx和和PxIEN(其

22、中(其中x代表代表0、1、2),其功能是使),其功能是使I/O口進(jìn)行中斷使能:口進(jìn)行中斷使能: 中斷狀態(tài)標(biāo)志寄存器包括中斷狀態(tài)標(biāo)志寄存器包括PxIFG,其功能是當(dāng)發(fā)生中斷時(shí),其功能是當(dāng)發(fā)生中斷時(shí),I/O口所對(duì)應(yīng)的中斷狀口所對(duì)應(yīng)的中斷狀態(tài)標(biāo)志將自動(dòng)置態(tài)標(biāo)志將自動(dòng)置1。 中斷控制寄存器為中斷控制寄存器為PICTL,其功能是控制,其功能是控制I/O口的中斷觸發(fā)方式??诘闹袛嘤|發(fā)方式。221.中斷使能寄存器中斷使能寄存器IENx(其中(其中x為為0,1,2) IENx寄存器包括三個(gè)八位寄存器:寄存器包括三個(gè)八位寄存器:IEN0、IEN1和和IEN2。23IEN1寄存器的第寄存器的第5位控制位控制P0口

23、的中斷,當(dāng)設(shè)置口的中斷,當(dāng)設(shè)置IEN1.P0IE時(shí),將設(shè)時(shí),將設(shè)置置P0端口所有引腳的中斷使能,即端口所有引腳的中斷使能,即P0.0P0.7引腳全部中斷使能引腳全部中斷使能/端口端口0中斷使能中斷使能IEN1 |= 0 x20;24IEN2寄存器的第寄存器的第4位和第位和第1位分別控制位分別控制P1端口和端口和P2端口的中斷,當(dāng)設(shè)置端口的中斷,當(dāng)設(shè)置IEN2.P1IE和和IEN2.P2IE時(shí),將設(shè)置時(shí),將設(shè)置P1端口和端口和P2端口所有引腳的中斷使能,即端口所有引腳的中斷使能,即P1.0P1.7引腳和引腳和P2.0P2.4引腳全部中斷使能引腳全部中斷使能 /端口端口1中斷使能中斷使能IEN2

24、|= 0 x10;/端口端口0中斷使能中斷使能IEN2 |= 0 x02;254.4.2 通用通用I/O中斷中斷中斷使能寄存器中斷使能寄存器PxIEN(其中(其中x為為0,1,2)PxIEN寄存器是設(shè)置端口的某一個(gè)引腳中斷使能寄存器是設(shè)置端口的某一個(gè)引腳中斷使能 以以P0IEN為例講解為例講解:/P0.4、P0.5中斷使能中斷使能P0IEN |= 0 x30;264.4.2 通用通用I/O中斷中斷 中斷狀態(tài)標(biāo)志寄存器中斷狀態(tài)標(biāo)志寄存器PxIFG (其中(其中x為為0,1,2)PxIFG寄存器是中斷狀態(tài)標(biāo)志寄存器,由于寄存器是中斷狀態(tài)標(biāo)志寄存器,由于CC2530的外部中斷共用一個(gè)的外部中斷共用一

25、個(gè)中斷向量,因此需要判斷是哪個(gè)引腳發(fā)生中斷,通過(guò)判斷中斷向量,因此需要判斷是哪個(gè)引腳發(fā)生中斷,通過(guò)判斷PxIFG寄存寄存中的中斷狀態(tài)標(biāo)志位可以判斷哪個(gè)引腳發(fā)生中斷。中的中斷狀態(tài)標(biāo)志位可以判斷哪個(gè)引腳發(fā)生中斷。PxIFG寄存器有三寄存器有三個(gè),分別是個(gè),分別是P0IFG、P1IFG和和P2IFG 以以P0IFG為例講解為例講解:/判斷端口判斷端口0是否有中斷標(biāo)志發(fā)生是否有中斷標(biāo)志發(fā)生if(P0IFG0) .274.4.2 通用通用I/O中斷中斷 中斷狀態(tài)標(biāo)志寄存器中斷狀態(tài)標(biāo)志寄存器IRCONP0IF=1;/標(biāo)志位為標(biāo)志位為1,端口,端口P0有中有中斷,具體是斷,具體是P0的哪個(gè)引腳引起的的哪個(gè)引

26、腳引起的還需要通過(guò)還需要通過(guò)P0IFG來(lái)判斷來(lái)判斷284.4.2 通用通用I/O中斷中斷 中斷狀態(tài)標(biāo)志寄存器中斷狀態(tài)標(biāo)志寄存器IRCON2P1IF=1;/標(biāo)志位為標(biāo)志位為1,端口,端口P1有中有中斷,具體是斷,具體是P1的哪個(gè)引腳引起的的哪個(gè)引腳引起的還需要通過(guò)還需要通過(guò)P1IFG來(lái)判斷來(lái)判斷P2IF=1;/標(biāo)志位為標(biāo)志位為1,端口,端口P2有中有中斷,具體是斷,具體是P2的哪個(gè)引腳引起的的哪個(gè)引腳引起的還需要通過(guò)還需要通過(guò)P2IFG來(lái)判斷來(lái)判斷294.4.2 通用通用I/O中斷中斷 中斷控制寄存器中斷控制寄存器PICTL (其中(其中x為為0,1,2)設(shè)置設(shè)置中斷觸發(fā)方式:分為輸入的上升沿觸

27、發(fā)和輸入的下降沿觸發(fā)。中斷觸發(fā)方式:分為輸入的上升沿觸發(fā)和輸入的下降沿觸發(fā)。/P0.4和和P0.5為下降沿觸發(fā)中斷為下降沿觸發(fā)中斷PICTL |= 0 x01;30- - 3030 - -4.4.2 通用通用I/O中斷中斷 中斷配置中斷配置 為了使能任一中斷,應(yīng)該采取以下步驟:為了使能任一中斷,應(yīng)該采取以下步驟:l設(shè)置需要發(fā)生中斷的設(shè)置需要發(fā)生中斷的I/O口為輸入方式??跒檩斎敕绞?。l清除中斷標(biāo)志,即將需要設(shè)置中斷的引腳所對(duì)應(yīng)的寄存器清除中斷標(biāo)志,即將需要設(shè)置中斷的引腳所對(duì)應(yīng)的寄存器PxIFG狀態(tài)標(biāo)志位置狀態(tài)標(biāo)志位置0。l設(shè)置具體的設(shè)置具體的I/O引腳中斷使能,即設(shè)置中斷的引腳所對(duì)應(yīng)的寄存器引

28、腳中斷使能,即設(shè)置中斷的引腳所對(duì)應(yīng)的寄存器PxIEN的中斷使能位的中斷使能位為為1。l設(shè)置設(shè)置I/O口的中斷觸發(fā)方式??诘闹袛嘤|發(fā)方式。l設(shè)置寄存器設(shè)置寄存器IEN1和和IEN2中對(duì)應(yīng)引腳的端口的中斷使能位為中對(duì)應(yīng)引腳的端口的中斷使能位為1。l設(shè)置設(shè)置IEN0中的中的EA位為位為1使能全局中斷。使能全局中斷。l編寫(xiě)中斷服務(wù)程序。編寫(xiě)中斷服務(wù)程序。31 通過(guò)按鍵觸發(fā)外部中斷的編程。 要求:要求: 當(dāng)當(dāng)S1鍵按下時(shí),點(diǎn)亮鍵按下時(shí),點(diǎn)亮P1_0上的燈上的燈(1)占用系統(tǒng)硬件資源:)占用系統(tǒng)硬件資源:P0_4; (2) 當(dāng)當(dāng)S1斷開(kāi)時(shí)斷開(kāi)時(shí)P0_4為高電平,接通時(shí)為高電平,接通時(shí)P0_4為低電平;為低電平; (3) 當(dāng)當(dāng)S1鍵按下,鍵按下,P0_4管腳上出現(xiàn)一個(gè)高電平轉(zhuǎn)變?yōu)榈碗娖焦苣_上出現(xiàn)一個(gè)高電平轉(zhuǎn)變?yōu)榈碗娖剑ㄏ陆笛兀┑男盘?hào),(下降沿)的信號(hào),當(dāng)當(dāng)S1鍵

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論