cc2530?

Tags: 硬件, 優先級,

在實際運用中,常需要藉助於中斷來處理緊急事務例如按鍵中斷、串口接收中斷、串口發送中斷、RF傳輸錯誤中斷等,如何自定義中斷優先級呢?下面,以簡單的例子講訴中斷優先級的配置,請看下文。

工具/原料

cc2530芯片說明書

IAR Embedded Workbench

方法/步驟1

在分析中斷優先級配置之前,首先簡單瞭解標準MCS-51的中斷系統,對於標準8051內核而言,有5箇中斷源,INT0、INT1、UART、Time0、Timer1,可以通過中斷優先級控制器IP(B8H)來設置優先級,分為二級優先級,默認情況下所有中斷源都處於同級最低優先級,即常說的自然優先級。

查看cc2530芯片說明書,可以看到芯片有18箇中斷源,每個中斷源都在特殊標誌寄存器(SFR)中有對應標誌位,可以使能/禁止中斷標誌位。

中斷源會根據選擇的優先級水平而被分配到優先組中,每個中斷可以獨立使能/禁止,通過IEN0、IEN1、IEN2寄存器控制。如下所示,即為2530芯片所有的中斷源及其中斷向量號:

cc2530 中斷優先級控制

cc2530 中斷優先級控制

值得注意的是,和標準的8051單片機一樣,51內核可以通過控制EA位來開啟/關閉系統總中斷。與標準8051內核相比,2530增加的中斷源帶來的是優先級的判定與裁決機制,基本處理機制就是:中斷使能情況下,優先級低的中斷可以被高優先級的中斷打斷,也就是說比如低的優先級中斷進入中斷服務程序後,如果在退出中斷服務之前發生更高優先級中斷,那麼單片機會先處理高優先級的程序,直到高的優先級處理完畢之後才轉回處理低優先級程序。簡單來說,就是中斷處理是搶佔式的中斷機理。

在默認復位情況下,單片機的中斷源優先級是自然優先級排列,所有中斷源都處於最低優先級,按照如下的中斷次序依次掃描,當有中斷標誌位置位時,內核就轉去處理,如下所示即為自然優先級下掃描次序:

cc2530 中斷優先級控制

在優先級處理時,共18箇中斷源每3箇中斷源分為一組,共6組優先級組,通過IP0、IP1寄存器來配置每組中斷源的優先級,其中00為最低,11為最高優先級,如下所示:

cc2530 中斷優先級控制

如下所示,如果要自定義優先級,可以通過設置IP0與IP1來設置每組的優先級,從而改變中斷處理機制,比如可以通過IPx設置,使得P2口外部中斷優先級高於UART0發送或接受中斷優先級。

/***************************************************

* Interrupt priority:

* Group 0 highest, Group 1 second,Group 5 next

*

***************************************************/

IP0 = (1<<0) (1<<5);

IP1 = (1<<0) (1<<1);

cc2530 中斷優先級控制

相關問題答案