本文詳細介紹Cortex-M3中斷優先級相關知識。
1、什么是異常和中斷
凡是打斷程序順序執行的事件都稱為異常(exception),比如HardFault,外部中斷等。所以中斷也可以說是異常的一種。其實這也很好理解,因為程序執行不外乎正常和異常而已,所以打擾程序正常運行流程的事件都可以叫異常。
2、Cortex-M3異常類型
包括系統異常(異常編號1-15)和外部中斷(異常編號16往上),系統異常在Cortex-M3內核中,由ARM設計,芯片廠商都會實現,外部中斷最多可以有240個,由芯片生產廠家決定數量種類,比如UART,DMA等中斷。Reset(-3)、NMI(-2)、HardFault(-1)這三個異常優先級都是負數且固定不變,優先級高于其他異常,除了這三個異常之外其他異常優先級都是可以編程的。
3、什么是中斷搶占
在執行低中斷優先級中斷函數時,高優先級中斷到來,低優先級中斷被打斷,執行高優先級中斷,高優先級中斷執行完后回到低優先級中斷繼續執行。高優先級中斷搶占了低優先級中斷。如下圖所示:
4、什么是搶占優先級和子優先級
每個中斷優先級都包含兩個部分,一部分稱作搶占優先級,另一部分稱作子優先級。以下來詳細說明以下兩個優先級的含義。
1)搶占優先級不同
具有高搶占優先級的中斷能夠搶占低搶占優先級的中斷,也就是上面提到的中斷嵌套。
2)搶占優先級相同,子優先級不同
當兩個中斷的搶占優先級設置為相同級別時,這兩個中斷不會出現中斷嵌套。如果其中一個中斷正在執行時,另外一個中斷到來,后來的中斷將會等到前一個中斷執行完才能執行。如果這兩個中斷都處在等待響應狀態,執行條件到來時,首先響應子優先級高的中斷。
3)搶占優先級相同,子優先級也相同
這種情況也不會出現中斷嵌套,內核將會按照向量表中的排位選擇,優先執行靠前的異常。比如Pend SV和Systick兩個中斷優先級都設置為相同,如果兩個中斷同時到來,優先執行PendSV,因為它的排序靠前,見上面向量表。
5、什么是優先級分組
在Cortex-M3內核中最多使用8Bit來表示中斷優先級,在這8Bit中一部分用來表示搶占優先級,一部分用來表示子優先級,這兩種優先級到底各占用幾位,是由內核寄存器AIRCR(應用程序中斷及復位控制寄存器)決定的,這個寄存的Bit8-Bit10代表了優先級分組,共3位,設置這三3位,可以改變優先級分組,如下幾種組合:
000 高7位搶占優先級,低1位子優先級
001 高6位搶占優先級,低2位子優先級
010 高5位搶占優先級,低3位子優先級
011 高4位搶占優先級,低4位子優先級
100 高3位搶占優先級,低5位子優先級
101 高2位搶占優先級,低6位子優先級
110 高1位搶占優先級,低7位子優先級
111 高0位搶占優先級,低8位子優先級
另,Cortex-M3內核要求最多使用8Bit來表示中斷優先級,但是很多芯片廠商為了簡化設計都會進行裁剪,比如STM32只用4位表示優先級。
-
ARM
+關注
關注
134文章
9179瀏覽量
369423 -
內核
+關注
關注
3文章
1383瀏覽量
40442 -
中斷
+關注
關注
5文章
900瀏覽量
41792 -
Cortex-M3
+關注
關注
9文章
270瀏覽量
59602 -
優先級
+關注
關注
0文章
21瀏覽量
8828
發布評論請先 登錄
相關推薦
Cortex-M3處理器中斷與FreeRTOS中斷優先級配置
STM32中斷優先級的相關概念與使用筆記資料免費下載
![STM32<b class='flag-5'>中斷</b><b class='flag-5'>優先級</b>的<b class='flag-5'>相關</b>概念與使用筆記資料免費下載](https://file.elecfans.com/web1/M00/A8/91/pIYBAF2MbiaAemVkAASglN8rIpc122.png)
STM32中斷優先級的相關概念與使用筆記詳細資料概述
![STM32<b class='flag-5'>中斷</b><b class='flag-5'>優先級</b>的<b class='flag-5'>相關</b>概念與使用筆記詳細資料概述](https://file.elecfans.com/web1/M00/B0/92/pIYBAF3oxhqAIEedAAVjjbSL7kg573.png)
STM32中斷優先級相關概念與使用筆記資料免費下載
![STM32<b class='flag-5'>中斷</b><b class='flag-5'>優先級</b><b class='flag-5'>相關</b>概念與使用筆記資料免費下載](https://file.elecfans.com/web1/M00/B2/62/o4YBAF4PAYSAD6ziAAjrkDBuPds673.png)
關于Cortex-M3的中斷優先級描述資料下載
![關于<b class='flag-5'>Cortex-M3</b>的<b class='flag-5'>中斷</b><b class='flag-5'>優先級</b>描述資料下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
2.FreeRTOS中斷優先級和任務優先級
![2.FreeRTOS<b class='flag-5'>中斷</b><b class='flag-5'>優先級</b>和任務<b class='flag-5'>優先級</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論