《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件3-2 任務(wù)2 外部中斷_第1頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件3-2 任務(wù)2 外部中斷_第2頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件3-2 任務(wù)2 外部中斷_第3頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件3-2 任務(wù)2 外部中斷_第4頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件3-2 任務(wù)2 外部中斷_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

什么是中斷01什么是外部中斷02

任務(wù):按鍵控制LED03目錄1中斷概述中斷(interrupt)是什么?CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生);CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)或中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷。中斷的作用?

(1)提高工作效率中斷使單片機(jī)系統(tǒng)具備應(yīng)對(duì)突發(fā)事件的能力,提高CPU的工作效率。(2)實(shí)現(xiàn)實(shí)時(shí)處理(3)實(shí)現(xiàn)異常處理1中斷概述CC2530共18個(gè)中斷源中斷請(qǐng)求可以通過設(shè)置中斷使能寄存器IEN0、IEN1或IEN2的中斷使能位使能或禁止中斷當(dāng)相應(yīng)的中斷源使能并發(fā)生時(shí),中斷標(biāo)志位將自動(dòng)置1,然后程序跳往中斷服務(wù)程序的入口地址執(zhí)行中斷服務(wù)程序。待中斷服務(wù)程序處理完畢后,由硬件清除中斷標(biāo)志位。定時(shí)器3捕獲/比較/溢出定時(shí)器4捕獲/比較/溢出ADC轉(zhuǎn)換結(jié)束DMA傳輸完成睡眠計(jì)時(shí)器比較看門狗計(jì)時(shí)溢出AES加密/解密完成RF通用中斷RF發(fā)送完成或接收完成I/O端口0外部中斷I/O端口1外部中斷I/O端口2外部中斷USART0發(fā)送完成USART0接收完成USART1發(fā)送完成USART1接收完成定時(shí)器1捕獲/比較/溢出定時(shí)器2中斷中斷源interruptenable中斷使能中斷使能寄存器中斷使能寄存器中斷使能寄存器中斷向量中斷服務(wù)程序的入口地址即中斷向量,中斷向量定義在頭文件“ioCC2530.h”中:#defineRFERR_VECTORVECT(0,0x03)/*RF內(nèi)核錯(cuò)誤中斷*/#defineADC_VECTORVECT(1,0x0B)/*ADC轉(zhuǎn)換結(jié)束*/#defineURX0_VECTORVECT(2,0x13)/*USART0RX完成*/#defineURX1_VECTORVECT(3,0x1B)/*USART1RX完成*/#defineENC_VECTORVECT(4,0x23)/*AES加密解密完成*/#defineST_VECTORVECT(5,0x2B)/*睡眠定時(shí)比較*/#defineP2INT_VECTORVECT(6,0x33)/*端口2中斷*/#defineUTX0_VECTORVECT(7,0x3B)/*USART0TX完成*/#defineDMA_VECTORVECT(8,0x43)/*DMA傳輸完成*/#defineT1_VECTORVECT(9,0x4B)/*Timer1捕獲/比較/溢出*/#defineT2_VECTORVECT(10,0x53)/*Timer2(MACTimer)*/#defineT3_VECTORVECT(11,0x5B)/*Timer3捕獲/比較/溢出*/#defineT4_VECTORVECT(12,0x63)/*Timer4捕獲/比較/溢出*/#defineP0INT_VECTORVECT(13,0x6B)/*端口0中斷*/#defineUTX1_VECTORVECT(14,0x73)/*USART1TX完成*/#defineP1INT_VECTORVECT(15,0x7B)/*端口1中斷*/#defineRF_VECTORVECT(16,0x83)/*RF通用中斷*/#defineWDT_VECTORVECT(17,0x8B)/*看門狗計(jì)時(shí)溢出*/1中斷概述外部中斷:即從單片機(jī)的I/O口向單片機(jī)輸入電平信號(hào),當(dāng)輸入電平信號(hào)的改變符合設(shè)置的觸發(fā)條件時(shí),中斷系統(tǒng)便會(huì)向CPU提出中斷請(qǐng)求。I/O端口0外部中斷I/O端口1外部中斷I/O端口2外部中斷總共3個(gè)外部中斷2外部中斷P0口P1口P2口外部中斷使能步驟PICTL

設(shè)置中斷觸發(fā)方式0:上升沿;1:下降沿PxIEN

端口引腳中斷IENx

中斷使能寄存器EA=1

總中斷使能PxIFG=0;PxIF=0;2外部中斷IEN1|=0x20;P0IEN|=0x02;PICTL|=0x01中斷完成后要清除中斷標(biāo)志位相關(guān)寄存器配置相關(guān)寄存器配置

中斷編程

中斷編程的一般過程如下:

(1)

中斷設(shè)置:根據(jù)外設(shè)的不同,具體的設(shè)置是不同的,一般至少包含啟用中斷。

(2)中斷函數(shù)的編寫;這是中斷編程的主要工作,需要注意的是,中斷函數(shù)應(yīng)盡可能地減少耗時(shí)或不進(jìn)行耗時(shí)操作。2外部中斷S1按鍵中斷配置函數(shù):voidInitKey_S1(){IEN1|=0x20;//允許P0口中斷;00100000P0IEN|=0x02;//P0.1設(shè)置為允許中斷PICTL|=0x01;//下降沿觸發(fā)

EA=1;//打開總中斷}2外部中斷中斷函數(shù)在IAR中用關(guān)鍵字

__interrupt來定義一個(gè)中斷函數(shù)。使用

#progmavector來提供中斷函數(shù)的入口地址(即中斷向量),并且中斷函數(shù)沒有返回值,沒有函數(shù)參數(shù)。中斷函數(shù)的一般格式如下:

#pragmavector=中斷向量

__interruptvoid函數(shù)名(void)

{

//中斷程序代碼

}2外部中斷/*S1中斷處理函數(shù)*/#pragmavector=P0INT_VECTOR__interruptvoidP0_ISR(void){DelayMS(10);//延時(shí)去抖

LED1=~LED1;//改變LED1狀態(tài)

P0IFG=0;//清中斷標(biāo)志

P0IF=0;//清中斷標(biāo)志}中斷函數(shù)任務(wù):按鍵中斷控制LED圖3-5按鍵電路圖本任務(wù)是實(shí)現(xiàn)按鍵控制LED亮滅,相關(guān)電路如圖3-5所示,圖中可以看出按鍵S1接在了CC2530的P0.1管腳上,當(dāng)按下按鍵S1時(shí),P0.1管腳變?yōu)榈碗娖剑凰砷_按鍵,P0.1管腳變?yōu)楦唠娖?。我們可以設(shè)置單片機(jī)檢測P0.1管腳上升沿或者是下降沿來觸發(fā)中斷。任務(wù):按鍵中斷控制LED圖3-6任務(wù)流程圖程序流程圖如圖3-6所示。源碼分析主函數(shù)實(shí)現(xiàn)了以下功能:(1)初始化LED燈函數(shù)InitLed():設(shè)置P1_0為普通I/O口,設(shè)置P1為輸出。(2)按鍵的初始化函數(shù)InitKey():配置外部中斷的相關(guān)寄存器。(3)使用while(1)等待中斷即可。/*main函數(shù)*/voidmain(void){InitLed();//設(shè)置LED燈相應(yīng)的IO口

InitKey();//設(shè)置S1相應(yīng)的IO口

while(1){}}源碼分析LED燈初始化函數(shù)按鍵的初始化,根據(jù)圖3-5按鍵原理圖可知,將P0.1的I/O口設(shè)置為外部中斷,下降沿觸發(fā)。/*LED燈初始化函數(shù)*/voidInitLed(void){P1DIR|=0x01;//P1.0定義為輸出口

LED1=1;//LED1燈上電默認(rèn)為熄滅}/*按鍵初始化函數(shù)*/voidInitKey(){P0IEN|=0x02;//P0.1設(shè)置為中斷方式1:中斷使能

PICTL|=0x01;//下降沿觸發(fā)

IEN1|=0x20;//允許P0口中斷;P0IFG=0x00;//初始化中斷標(biāo)志位

EA=1;//打開總中斷}源碼分析當(dāng)檢測到有外部中斷(按鍵中斷)即按鍵按下時(shí),便會(huì)觸發(fā)中斷處理函數(shù),LED燈狀態(tài)翻轉(zhuǎn)。/*中斷處理函數(shù)*/#pragmavector=P1INT_VECTOR__interruptvoidP1_ISR(void){DelayMS(10);//延時(shí)去抖

LED1=~LED1;//改變LED1狀態(tài)

P1IFG=0;//清中斷標(biāo)志

P1IF=0;//清中斷標(biāo)志}操作步驟(1)編寫程序并編譯,正確連接CC2530開發(fā)板與仿真器,選擇“Project→Downloadanddebug”將程序下載到CC2530開發(fā)板中(2)下載完后可以單擊“Debug→Go”全速運(yùn)行,也可以將CC2530重新上電或者按下復(fù)位按鈕讓剛才下載的程序重新運(yùn)行。(3)程序運(yùn)行后,按下按鍵,會(huì)發(fā)現(xiàn)LED的亮滅狀態(tài)會(huì)發(fā)生改變。感謝觀看THANKYOUPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Plea

溫馨提示

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

評(píng)論

0/150

提交評(píng)論