<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32應(yīng)用的FreeRTOS中斷設(shè)置

          基于STM32應(yīng)用的FreeRTOS中斷設(shè)置

          作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          一、FreeRTOS中斷設(shè)置介紹

          FreeRTOSConfig.h中定義了兩個(gè)宏,分別是:

          本文引用地址:http://www.ex-cimer.com/article/201611/316110.htm
          • configKERNEL_INTERRUPT_PRIORITY
          • configMAX_SYSCALL_INTERRUPT_PRIORITY
          • ?configKERNEL_INTERRUPT_PRIORITY用來設(shè)置RTOS內(nèi)核自己的中斷優(yōu)先級(jí)。因?yàn)镽TOS內(nèi)核中斷不允許搶占用戶使用的中斷,因此這個(gè)宏一般定義為硬件最低優(yōu)先級(jí)。
          • configMAX_SYSCALL_INTERRUPT_PRIORITY用來設(shè)置可以在中斷服務(wù)程序中安全調(diào)用FreeRTOS API函數(shù)的最高中斷優(yōu)先級(jí)。優(yōu)先級(jí)小于等于這個(gè)宏所代表的優(yōu)先級(jí)時(shí),程序可以在中斷服務(wù)程序中安全的調(diào)用FreeRTOS API函數(shù);如果優(yōu)先級(jí)大于這個(gè)宏所代表的優(yōu)先級(jí),表示FreeRTOS無法禁止這個(gè)中斷,在這個(gè)中斷服務(wù)程序中絕不可以調(diào)用任何API函數(shù)。

          也就是說?RTOS中斷嵌套方案將可用的中斷優(yōu)先級(jí)分成2組:會(huì)被RTOS臨界區(qū)覆蓋的和永遠(yuǎn)不會(huì)被覆蓋的所以這些是一直被使能的。configMAX_SYSCALL_INTERRUPT_PRIORITY設(shè)置值是這兩組的邊界值。

          如上圖所示,在STM32中使用FreeRTOS時(shí),系統(tǒng)默認(rèn):

          //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也即是優(yōu)先級(jí)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也即優(yōu)先級(jí)11)

          故在中斷優(yōu)先級(jí)為0~10的中斷,均不會(huì)被內(nèi)核延遲,并且可嵌套但不能調(diào)用API函數(shù)。在11~15之間的中斷可以調(diào)用以?FromISR結(jié)尾的API函數(shù)。




          關(guān)鍵詞: STM32FreeRTOS中斷設(shè)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();