新聞中心

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

        基于STM32應用的FreeRTOS中斷設置

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

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

        本文引用地址:http://www.104case.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函數。




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 崇左市| 成武县| 鸡东县| 禄丰县| 农安县| 陆良县| 勐海县| 航空| 莱芜市| 聂荣县| 怀宁县| 商水县| 徐水县| 铜陵市| 金华市| 潢川县| 乐昌市| 扶风县| 文安县| 宣化县| 吉木萨尔县| 化隆| 高雄市| 越西县| 安化县| 安义县| 恭城| 剑阁县| 泰州市| 同德县| 河南省| 波密县| 土默特右旗| 阳曲县| 汝南县| 西城区| 七台河市| 丹寨县| 米林县| 师宗县| 涪陵区|