第九周CC2530中斷控制器原理(大課)教材課件_第1頁
第九周CC2530中斷控制器原理(大課)教材課件_第2頁
第九周CC2530中斷控制器原理(大課)教材課件_第3頁
第九周CC2530中斷控制器原理(大課)教材課件_第4頁
第九周CC2530中斷控制器原理(大課)教材課件_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機原理與應用教學回顧高速時鐘的設置:如設置成32M時鐘步驟:1.選擇外部32MHz晶振作為主時鐘源;2.等待32MHz晶振穩定 3.當前系統時鐘不分頻如設置成8M時鐘步驟:將上述第3步中修改成:當前系統時鐘4分頻串口控制器初始化編程:1.設置為32M時鐘;2.選擇串口外設備用位置(位置1或者位置2);3.初始化I/O口為外部設備;4.設置中斷優先級;5.選擇同步異步通信方式:UART方式6.設置波特率(查表)串口發送:查詢狀態位;或者通過中斷標志位串口接收:查詢狀態位;或者通過中斷標志位本周教學主要內容中斷概述CC2530中斷原理(難點)CC2530中斷編程(重點)教學目標理解中斷的概念、

2、一般處理步驟;掌握CC2530中斷原理;掌握CC2530中斷編程步驟。一、中斷概述CPU與外部設備之間數據傳送方式主要有以下幾種:(1)無條件傳送(適用設備類型有限):適用于總是準備好的外設,如我們已經通過實驗使用了無條件傳送方式點亮發光二極管;(2)查詢方式(浪費cpu資源):傳送數據之前需要先查詢設備的狀態,狀態滿足要求則傳送,否則等待,如我們用查詢方式使用串口;(3)中斷方式:當外設滿足傳送數據狀態時(如串口控制器的發送緩沖區空或接收緩沖區慢)會向cpu發出請求信號,強迫cpu暫停“手頭的工作”,轉去處理該外設,完畢后再繼續原來的“工作”;(4)直接存儲器(DMA)存取(有興趣的可以自己

3、可查閱相關資料)已經實現已經實現CPU在硬件上對中斷的支持:(1)具有中斷請求輸入信號管腳;(2)每執行完一條指令都會檢測是否有中斷請求信號;一、中斷概述主程序斷點繼續執行主程序響應中斷請求返回主程序中斷服務程序(1)中斷服務程序:CPU響應中斷后,轉去執行相應的處理程序,該處理程序通常稱之為中斷服務程序。(2)主程序:原來正常運行的程序稱為主程序。(3)斷點:主程序被斷開的位置(或地址)稱為斷點。(4)中斷源:引起中斷的原因,或能發出中斷申請的來源,稱為中斷源。(5)中斷請求:中斷源要求服務的請求稱為中斷請求(或中斷申請)。 一、中斷概述中斷響應的一般過程(1)中斷請求 當外部設備就緒時會產

4、生一個中斷請求信號加到CPU的中斷請求輸入端,即對CPU提出中斷請求。對于中斷請求信號,需注意兩個問題:有效的中斷請求電平保持到被cpu發現;當cpu響應請求后應當有效的請求電平去掉;在使用中斷控制器時(大多數如此),cpu的中斷響應信號就能做到這一點,若自己構成中斷請求硬件時,需要注意以上兩個問題;(2)中斷響應CPU在每條指令執行的最后一個時鐘周期監測中斷請求輸入管腳有無請求發生, 而后決定是否對它做出響應。(3)斷點保護為了中斷處理完畢后為了能接著處理被中斷的事情,CPU硬件需要對硬件現場進行保護。一、中斷概述(4)中斷源識別 當有多個中斷源時,一旦中斷請求發生,cpu須判斷是哪一個中斷

5、源提出請求。一般有兩種確定中斷源的方法:a:軟件查詢;b:中斷向量法;(大多數如此) 利用不同的中斷向量,從而確定是來自不同的中斷源。(5)中斷服務 程序員所編寫的中斷處理程序統稱中斷服務程序,這也是中斷處理需要程序員所做的主要工作;(6)斷點恢復(7)中斷返回二、CC2530的中斷原理中斷由中斷源引起,中斷源由相應的寄存器來控制。當需要使用中斷時,需配置相應的中斷寄存器來開啟中斷,當中斷發生時將跳入中斷服務函數中執行此中斷所需要處理的事件 。中斷源與中斷向量 CC2530片內具有一個中斷控制器,能夠同時對18路中斷源進行管理,每個中斷源都可以產生中斷請求,中斷請求可以通過設置中斷使能SFR寄

6、存器的中斷使能位IEN0、IEN1或IEN2使能或禁止中斷。中斷號碼描述中斷名稱中斷向量中斷屏蔽中斷標志0RF TX RFIO下溢或RX FIFO溢出RFERR03HIEN0.RFERRIETCON.RFERRIF(1)1ADC轉換結束ADC0BHIEN0.ADCIETCON.ADCIF(1)2USART0 RX完成URX013HIEN0.URX0IETCON.URX0IF(1)3USART1 RX完成URX11BHIEN0.URX1IETCON.URX1IF(1)4AES加密/解密完成ENC23HIEN0.ENCIES0CON.ENCIF5睡眠計時器比較ST2BHIEN0.STIEIRCON

7、.STIF6端口2輸入/USBP2INT33HIEN2.P2IEIRCON2.P2IF(2)7USART0 TX完成UTX03BHIEN2.UTX0IEIRCON2.UTX0IF8DMA傳送完成DMA43HIEN1.DMAIEIRCON.DMAIF9定時器1(16位)捕獲/比較/溢出T14BHIEN1.T1IEIRCON.T1IF(1)(2)10定時器2T253HIEN1.T2IEIRCON.T2IF(1)(2)11定時器3(8位)捕獲/比較/溢出T35BHIEN1.T3IEIRCON.T3IF(1)(2)12定時器4(8位)捕獲/比較/溢出T463HIEN1.T4IEIRCON.T4IF(1

8、)(2)13端口0輸入P0INT6BHIEN1.P0IEIRCON.P0IF(2)14USART 1 TX完成UTX173HIEN2.UTXIEIRCON2.UTX1IF15端口1輸入P1INT7BHIEN2.P1IEIRCON2.P1IF(2)16RF通用中斷RF83HIEN2.RFIES1CON.RFIF(2)17看門狗定時器溢出WDT8BHIEN2.WDTIEIRCON.WDTIF(1)當調用中斷處理程序時會由硬件清除中斷;(2)表示還存在子級中斷二、CC2530的中斷原理我們已經大致指導如何編寫中斷處理程序了,但要保證讓中斷處理程序真正得到調用前,我們還得對中斷控制器進行初始化,如何初

9、始化?還得理解中斷信號從源頭如何一步步傳到CPU的。18路中斷總開關 優先級排隊,得到第一名的將會得到響應,多個第一名則按順序輪詢 18路中斷分開關帶陰影的標志位會有硬件清除我們可以這樣認為,當發生了某個中斷:PC(指令計數器)對應的斷向量,也就是說,cpu將會執行對應的中斷向量處的指令。- 12 - 三、中斷的使用1.中斷源與中斷向量 當相應的中斷源使能并發生時,中斷標志位將自動置1,然后程序跳往中斷服務程序的入口地址執行中斷服務程序。待中斷服務程序處理完畢后,由硬件清除中斷標志位 中斷服務程序的入口地址即中斷向量,CC2530的18個中斷源對應了18個中斷向量,中斷向量定義在頭文件“ioC

10、C2530.h”中 - 13 -三、中斷的使用2.中斷優先級 中斷優先級將決定中斷響應的先后順序,在CC2530中分為六個中斷優先組,即IPG0IPG5,每一組中斷優先組中有三個中斷源 組中斷IPG0RFERRRFDMAIPG1ADCT1P2INTIPG2URX0T2UTX0IPG3URX1T3UTX1IPG4ENCT4P1INTIPG5STP0INTWDT2.中斷優先級 中斷優先組的優先級設定由寄存器IP0和IP1來設置。CC2530的優先級有4級,即03級,其中0級的優先級最低,3級的優先級最高。 IP1_XIP0_X優先級000 (優先級別最低)011102113(優先級別最高)其中X為

11、六個中斷優先組IPG0IPG5中的任何一個 。 設置IPG0優先級最高IP1_IPG0 = 1;IP0_IPG0 = 1;三、中斷的使用- 15 -2.中斷優先級 如果同時收到相同優先級或同一優先級組中的中斷請求時,將采用輪流檢測順序來判斷中斷優先級別的響應 三、中斷的使用2.中斷優先級 中斷向量編號中斷名稱優先級排序0RFERR輪流探測順序為自上向下優先級依次降低16RF8DMA1ADC9T12URX010T23URX111T34ENC12T45ST13P0INT6P2INT7UTX014UTX115P1INT17WDT例如:在中斷優先級組IPG0中的中斷RFERR、RF和DMA的中斷優先級

12、是相同的,如果同時使用這三個中斷,就需要使用輪流探測順序來判斷哪一優先級最高。由輪流探測順序表查得RFERR中斷優先級最高,RF中斷次之,DMA中斷與其他兩個中斷相比中斷優先級最低 3.中斷處理過程 中斷發生時,CC2530硬件自動完成以下處理: 中斷申請:中斷源向CPU發出中斷請求信號(中斷申請一般需要在程序初始化中配置相應的中斷寄存器開啟中斷) 中斷響應:CPU檢測中斷申請,把主程序中斷的地址保存到堆棧,轉入中斷向量入口地址 中斷處理:按照中斷向量中設定好的地址,轉入相應的中斷服務程序 中斷返回:中斷服務程序執行完畢后,CPU執行中斷返回指令,把堆棧中保存的數據從堆棧彈出,返回原來程序 4

13、.中斷編程 中斷編程的一般過程如下 :中斷設置:根據外設的不同,具體的設置是不同的,一般至少包含啟用中斷 中斷函數編寫;這是中斷編程的主要工作,需要注意的是,中斷函數盡可能的減少耗時或不進行耗時操作 以CC2530的外部中斷為例: P0IFG = 0 x00;/P0中斷標志清0 P0INP &= 0X30; /P0.4有上拉、下拉能力 P0IEN |= 0 x30; /P0.4和P0.5中斷使能 PICTL|= 0X01; /P0.4和P0.5,下降沿觸發 EA = 1; /開中斷 IEN1 |= 0X20; /端口0中斷使能- 19 -4.中斷編程 中斷編程的一般過程如下 :CC2530所使

14、用的編譯器為IAR,在IAR編譯器中用關鍵字_interrupt來定義一個中斷函數。使用#progma vector來提供中斷函數的入口地址,并且中斷函數沒有返回值,沒有函數參數 #pragma vector = P0INT_VECTOR_interrupt void P0_ISR ( void) /中斷程序代碼4.中斷編程 在中斷函數編寫中,當程序進入中斷服務程序之后,需要執行以下幾個步驟 :將對應的中斷關掉(不是必須的,需要根據具體情況來處理);如果需要判斷具體的中斷源,則根據中斷標志位進行判斷(例如所有I/O中斷共用1個中斷向量,需要通過中斷標志區分是哪個引腳引起的中斷)清中斷標志(不是

15、必須的,CC2530中中斷發生后由硬件自動清中斷標志位)處理中斷事件,此過程要盡可能的少耗時最后如果在第一步中關閉了相應的中斷源,需要在退出中斷服務程序之前打開對應的中斷#pragma vector = P0INT_VECTOR/中斷函數入口地址 _interrupt void P0_ISR(void)/定義一個中斷函數 P0IEN &= 0 x30;/關端口P0.4、P0.5中斷 if(P0IFG0)/判斷中斷發生 P0IFG = 0;/清中斷標志 /*中斷事件的處理*/ . . . . . . . . . P0IEN |= 0 x30; /開中斷 在設置I/O口的中斷時必須要將其設置為輸入

16、狀態,通過外部信號的上升或下降沿觸發中斷。通用I/O的所有的外部中斷共用一個中斷向量,根據中斷標志位來判斷是哪個引腳發生中斷 通用I/O中斷寄存器有三類:中斷使能寄存器、中斷狀態標志寄存器和中斷控制寄存器 中斷使能寄存器包括IENx和PxIEN(其中x代表0、1、2),其功能是使I/O口進行中斷使能:中斷狀態標志寄存器包括PxIFG,其功能是當發生中斷時,I/O口所對應的中斷狀態標志將自動置1。中斷控制寄存器為PICTL,其功能是控制I/O口的中斷觸發方式。四、IO中斷1.中斷使能寄存器IENx(其中x為0,1,2) IENx寄存器包括三個八位寄存器:IEN0、IEN1和IEN2。位名稱復位R

17、/W描述7EA0R/W禁止所有中斷 0:無中斷被確認1:通過設置對應的使能位將每個中斷源分別使能和禁止6-0R0保留5STIE0R/W睡眠定時器中斷使能0:中斷禁止 1:中斷使能4ENCIE0R/WAES加密/解密中斷使能0:中斷禁止 1:中斷使能3URX1IE0R/WUSART1 RX中斷使能0:中斷禁止 1:中斷使能2URX0IE0R/WUSART0 RX中斷使能0:中斷禁止 1:中斷使能1ADCIE0R/WADC中斷使能0:中斷禁止 1:中斷使能0RFERRIE0R/WRF TX/RX FIFO中斷使能0:中斷禁止 1:中斷使能IEN1寄存器的第5位控制P0口的中斷,當設置IEN1.P0

18、IE時,將設置P0端口所有引腳的中斷使能,即P0.0P0.7引腳全部中斷使能位名稱復位R/W描述7:6-00R0保留5P0IE0R/W端口0中斷使能0:中斷禁止 1:中斷使能4T4IE0R/W定時器4中斷使能0:中斷禁止 1:中斷使能3T3IE0R/W定時器3中斷使能0:中斷禁止 1:中斷使能2T2IE0R/W定時器2中斷使能0:中斷禁止 1:中斷使能1T1IE0R/W定時器1中斷使能0:中斷禁止 1:中斷使能0DMAIE0R/WDMA中斷使能0:中斷禁止 1:中斷使能/端口0中斷使能IEN1 |= 0 x20;IEN2寄存器的第4位和第1位分別控制P1端口和P2端口的中斷,當設置IEN2.P

19、1IE和IEN2.P2IE時,將設置P1端口和P2端口所有引腳的中斷使能,即P1.0P1.7引腳和P2.0P2.4引腳全部中斷使能 位名稱復位R/W描述7:6-00R0保留5WDTIE0R/W看門狗定時器中斷使能0:中斷禁止 1:中斷使能4P1IE0R/W端口1中斷使能0:中斷禁止 1:中斷使能3UTX1IE0R/WUSART1 TX中斷使能0:中斷禁止 1:中斷使能2UTX0IE0R/WUSART2 TX中斷使能0:中斷禁止 1:中斷使能1P2IE0R/W端口2中斷使能0:中斷禁止 1:中斷使能0RFIE0R/WRF一般中斷使能0:中斷禁止 1:中斷使能/端口1中斷使能IEN2 |= 0 x

20、10;/端口0中斷使能IEN2 |= 0 x02;4.4.2 通用I/O中斷中斷使能寄存器PxIEN(其中x為0,1,2)PxIEN寄存器是設置端口的某一個引腳中斷使能 以P0IEN為例講解:位名稱復位R/W描述7:0P0IEN7:00 x00R/W端口0 P0.7P0.0中斷使能0:中斷禁止1:中斷使能/P0.4、P0.5中斷使能P0IEN |= 0 x30;4.4.2 通用I/O中斷中斷狀態標志寄存器PxIFG (其中x為0,1,2)PxIFG寄存器是中斷狀態標志寄存器,由于CC2530的外部中斷共用一個中斷向量,因此需要判斷是哪個引腳發生中斷,通過判斷PxIFG寄存中的中斷狀態標志位可以

21、判斷哪個引腳發生中斷。PxIFG寄存器有三個,分別是P0IFG、P1IFG和P2IFG以P0IFG為例講解:/判斷端口0是否有中斷標志發生if(P0IFG0) .位名稱復位R/W描述7:0P0IF7:00 x00R/W端口0 P0.7P0.0中斷狀態標志0:未發生中斷 1:發生中斷4.4.2 通用I/O中斷中斷狀態標志寄存器IRCONP0IF=1;/標志位為1,端口P0有中斷,具體是P0的哪個引腳引起的還需要通過P0IFG來判斷4.4.2 通用I/O中斷中斷狀態標志寄存器IRCON2P1IF=1;/標志位為1,端口P1有中斷,具體是P1的哪個引腳引起的還需要通過P1IFG來判斷P2IF=1;/

22、標志位為1,端口P2有中斷,具體是P2的哪個引腳引起的還需要通過P2IFG來判斷4.4.2 通用I/O中斷中斷控制寄存器PICTL (其中x為0,1,2)設置中斷觸發方式:分為輸入的上升沿觸發和輸入的下降沿觸發。位名稱復位R/W描述7PADSC00R0控制I/O引腳在輸出模式下的驅動能力,選擇輸出驅動能力來補償引腳DVDD的低I/O電壓(為了確保在較低的電壓下的驅動能力和較高電壓下的驅動能力相同)。0:最小驅動能力增強,DVDD1/2等于或大于2.6V1:最大驅動能力增強,DVDD1/2小于2.6V6:4-000R0保留3P2ICON0R/W端口2的P2.4P2.0輸入模式下的中斷配置,該位為

23、所有端口2的輸入P2.4P2.0選擇中斷請求條件0:輸入的上升沿引起中斷 1:輸入的下降沿引起中斷2P1ICONH0R/W端口1的P1.7P1.4輸入模式下的中斷配置,該位為所有端口1的輸入P1.7P1.4選擇中斷請求條件0:輸入的上升沿引起中斷1:輸入的下降沿引起中斷1P1ICONL0R/W端口1的P1.4P1.0輸入模式下的中斷配置,該位為所有端口1的輸入P1.4P1.0選擇中斷請求條件0:輸入的上升沿引起中斷1:輸入的下降沿引起中斷0P0ICON0R/W端口0的P0.7P0.0輸入模式下的中斷配置,該位為所有端口0的輸入P0.7P0.0選擇中斷請求條件0:輸入的上升沿引起中斷1:輸入的下降沿引起中斷/P0.4和P0.5為下降沿觸發中斷PICTL |= 0 x01;- 30 -4.4.2 通用I/O中斷中斷配置為了使能任一中斷,應該采取以下步驟:設置需要發生中斷的I/O口為輸入方式。清除中斷標志,即將需要設置中斷的引腳所對應的寄存器PxIFG狀態標志位置0。設置具體的I/O引腳中斷使能,即設置中斷的引腳所對應的寄存器PxIEN的中斷使能位為1。設置I/O口的中斷觸發方式。設置寄存器IEN1和IEN2中對應引腳的端口的中斷使能位為1。設置

溫馨提示

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

評論

0/150

提交評論