Cortex-M 中斷
Cortex-M 內核(STM32)的 MCU 提供了一個用于中斷管理的嵌套向量中斷控制器(NVIC)。Cotex-M3 的 NVIC 最多支持 240 個 IRQ(中斷請求)、1 個不可屏蔽中斷(NMI)、1 個 Systick(滴答定時器)定時器中斷和多個系統(tǒng)異常。
Cortex-M 處理器有多個用于管理中斷和異常的可編程寄存器,這些寄存器大多數(shù)都在 NVIC 和系統(tǒng)控制塊(SCB)中,CMSIS 將這些寄存器定義為結構體。以 STM32F103 為例,打開 core_cm3.h,有兩個結構體,NVIC_Type 和 SCB_Type,就存儲了這些信息。
優(yōu)先級分組定義
當多個中斷來臨的時候處理器應該響應哪一個中斷是由中斷的優(yōu)先級來決定的,高優(yōu)先級的中斷(優(yōu)先級編號小)肯定是首先得到響應,而且高優(yōu)先級的中斷可以搶占低優(yōu)先級的中斷,這個就是中斷嵌套。
Cortex-M 處理器的有些中斷是具有固定的優(yōu)先級的,比如復位、NMI、HardFault,這些中斷的優(yōu)先級都是負數(shù),優(yōu)先級也是最高的。
Cortex-M 處理器有三個固定優(yōu)先級和 256 個可編程的優(yōu)先級,最多有 128 個搶占等級,但是實際的優(yōu)先級數(shù)量是由芯片廠商來決定的。但是,絕大多數(shù)的芯片都會精簡設計的,以致實際上支持的優(yōu)先級數(shù)會更少,如 8 級、16 級、32 級等,比如 STM32 就只有 16 級優(yōu)先級。
FreeRTOS 中斷配置宏
1、configPRIO_BITS:設置 MCU 使用幾位優(yōu)先級,STM32 使用的是 4 位,因此此宏為 4
2、configLIBRARY_LOWEST_INTERRUPT_PRIORITY :設置最低優(yōu)先級。
3、configKERNEL_INTERRUPT_PRIORITY:此宏用來設置內核中斷優(yōu)先級。
4、configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY:來設置 FreeRTOS 系統(tǒng)可管理的最大優(yōu)先級,是高于 x 的優(yōu)先級不歸 FreeRTOS 管理!
5、configMAX_SYSCALL_INTERRUPT_PRIORITY:低于此優(yōu)先級的中斷可以安全的調用 FreeRTOS 的 API 函數(shù),高于此優(yōu)先級的中斷 FreeRTOS 是不能禁止的,中斷服務函數(shù)也不能調用 FreeRTOS 的 API 函數(shù)!
-
處理器
+關注
關注
68文章
19314瀏覽量
230074 -
嵌入式
+關注
關注
5085文章
19138瀏覽量
305779 -
內核
+關注
關注
3文章
1375瀏覽量
40311 -
STM32
+關注
關注
2270文章
10904瀏覽量
356398 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62217
發(fā)布評論請先 登錄
相關推薦
評論