Cortex-M 中斷
Cortex-M 內(nèi)核(STM32)的 MCU 提供了一個用于中斷管理的嵌套向量中斷控制器(NVIC)。Cotex-M3 的 NVIC 最多支持 240 個 IRQ(中斷請求)、1 個不可屏蔽中斷(NMI)、1 個 Systick(滴答定時器)定時器中斷和多個系統(tǒng)異常。
Cortex-M 處理器有多個用于管理中斷和異常的可編程寄存器,這些寄存器大多數(shù)都在 NVIC 和系統(tǒng)控制塊(SCB)中,CMSIS 將這些寄存器定義為結(jié)構(gòu)體。以 STM32F103 為例,打開 core_cm3.h,有兩個結(jié)構(gòu)體,NVIC_Type 和 SCB_Type,就存儲了這些信息。
優(yōu)先級分組定義
當多個中斷來臨的時候處理器應(yīng)該響應(yīng)哪一個中斷是由中斷的優(yōu)先級來決定的,高優(yōu)先級的中斷(優(yōu)先級編號?。┛隙ㄊ鞘紫鹊玫巾憫?yīng),而且高優(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ù)的芯片都會精簡設(shè)計的,以致實際上支持的優(yōu)先級數(shù)會更少,如 8 級、16 級、32 級等,比如 STM32 就只有 16 級優(yōu)先級。
FreeRTOS 中斷配置宏
1、configPRIO_BITS:設(shè)置 MCU 使用幾位優(yōu)先級,STM32 使用的是 4 位,因此此宏為 4
2、configLIBRARY_LOWEST_INTERRUPT_PRIORITY :設(shè)置最低優(yōu)先級。
3、configKERNEL_INTERRUPT_PRIORITY:此宏用來設(shè)置內(nèi)核中斷優(yōu)先級。
4、configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY:來設(shè)置 FreeRTOS 系統(tǒng)可管理的最大優(yōu)先級,是高于 x 的優(yōu)先級不歸 FreeRTOS 管理!
5、configMAX_SYSCALL_INTERRUPT_PRIORITY:低于此優(yōu)先級的中斷可以安全的調(diào)用 FreeRTOS 的 API 函數(shù),高于此優(yōu)先級的中斷 FreeRTOS 是不能禁止的,中斷服務(wù)函數(shù)也不能調(diào)用 FreeRTOS 的 API 函數(shù)!
-
處理器
+關(guān)注
關(guān)注
68文章
19896瀏覽量
235299 -
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317655 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1416瀏覽量
41443 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
365042 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
493瀏覽量
64366
發(fā)布評論請先 登錄
freeRTOS的中斷配置
如何在zynq 7000平臺下運行 java web程序
基于STM32應(yīng)用的FreeRTOS中斷設(shè)置

STM32平臺下GP2Y1010AU0F灰塵傳感器的使用源代碼

基于STM32的FreeRTOS學習之中斷配置和臨界段(四)

stm32cubemx 配置FreeRTOS相關(guān)基礎(chǔ)基礎(chǔ)知識及串口接收中斷實驗

STM32之FreeRTOS:(一) 中斷配置和臨界段的使用

Cortex-M中斷及FreeRTOS中斷優(yōu)先級配置原理

評論