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