久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32應用的FreeRTOS中斷設置

基于STM32應用的FreeRTOS中斷設置

作者: 時間:2016-11-13 來源:網絡 收藏
一、FreeRTOS中斷設置介紹

FreeRTOSConfig.h中定義了兩個宏,分別是:

本文引用地址:http://cqxgywz.com/article/201611/316110.htm
  • configKERNEL_INTERRUPT_PRIORITY
  • configMAX_SYSCALL_INTERRUPT_PRIORITY
  • ?configKERNEL_INTERRUPT_PRIORITY用來設置RTOS內核自己的中斷優先級。因為RTOS內核中斷不允許搶占用戶使用的中斷,因此這個宏一般定義為硬件最低優先級。
  • configMAX_SYSCALL_INTERRUPT_PRIORITY用來設置可以在中斷服務程序中安全調用FreeRTOS API函數的最高中斷優先級。優先級小于等于這個宏所代表的優先級時,程序可以在中斷服務程序中安全的調用FreeRTOS API函數;如果優先級大于這個宏所代表的優先級,表示FreeRTOS無法禁止這個中斷,在這個中斷服務程序中絕不可以調用任何API函數。

也就是說?RTOS中斷嵌套方案將可用的中斷優先級分成2組:會被RTOS臨界區覆蓋的和永遠不會被覆蓋的所以這些是一直被使能的。configMAX_SYSCALL_INTERRUPT_PRIORITY設置值是這兩組的邊界值。

如上圖所示,在STM32中使用FreeRTOS時,系統默認:

//This is the raw value as per the Cortex-M3 NVIC. Values can be 255
(lowest) to 0 (1?) (highest).
#define configKERNEL_INTERRUPT_PRIORITY 255(0xFF也即是優先級15)?
//!!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html.
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 (0xBF也即優先級11)

故在中斷優先級為0~10的中斷,均不會被內核延遲,并且可嵌套但不能調用API函數。在11~15之間的中斷可以調用以?FromISR結尾的API函數。




評論


技術專區

關閉