• <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>
  • 專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    Cortex-M3中斷服務程序設計

    作者:佚名   來源:本站原創   點擊數:  更新時間:2014年08月19日   【字體:

    ISR是嵌入式應用系統獲取各種事件的基本手段。而事件是實時性問題的討論基礎和事件計算的起點。

    • 中斷優先級

    不同中斷服務程序應有不同優先級,在允許中斷嵌套時,最高優先級的中斷總是能夠得到響應。

    只要沒關中斷,ISR可以中斷任何任務的運行,比最高優先級的任務還要高。

    • Cortex-M3中斷資源

    搶占優先級:實現中斷嵌套

    子優先級:當搶占優先級相同的兩個中斷同時發生時,子優先級高的中斷可以首先獲得運行權。

    • 中斷優先級安排原則

    緊迫性:觸發中斷的事件允許耽誤的時間越短,優先級越高。

    關鍵性:觸發中斷的事件越關鍵,越高

    頻繁性:觸發中斷的事件發生越頻繁,越高

    快捷性:前三項相近,ISR處理越快,越高。

    ISR功能應盡量簡單,只要將獲取的異步事件用通信手段發給關聯任務就行,后續處理由關聯任務完成。

     

    1. 中斷服務程序設計

    • ISR結構



    4部分

    A:使os掌握當前中斷的嵌套深度。

    B:ISR功能代碼。必須調用系統通信服務函數,與其他任務進行通信。正是這種通信功能是關聯任務得到同步信號或數據,從而進入就緒狀態。不允許調用延時函數和可能被掛起的系統服務函數。

    C:清除該中斷的相應標志。以便下次再次相應。不用ISR函數,中斷源的中斷相應標志不同,清除中斷標志的代碼也不同。

    D:調用退出中斷函數。實現任務調度功能。判斷是返回中斷(中斷嵌套)還是返回任務(原任務還是更高級任務)

    • 選擇與關聯任務的通信手段

    兩種類型:

    A:信號型。ISR只完成發送信號量的工作。表示事件發生,通過信號量的同步功能出發關聯任務,所有具體工作由任務完成。

    B:數據型。ISR需要完成信息采集工作,然后使用消息郵箱(消息隊列)將數據發送給關聯任務,由關聯任務完成后續數據處理工作。

     

    細分如下:

    A:觸發ISR事件不包含數據。用信號量與關聯任務通信。

    B:觸發ISR事件包含數據低頻事件。用信號量與關聯任務通信。采集任務放在關聯任務中。

    C:觸發ISR事件包含數據中高頻事件。ISR采集數據。ISR中使用消息郵箱與關聯任務通信。關聯任務完成后續工作。

    D:觸發ISR事件包含數據非周期高頻事件。ISR采集數據,ISR中使用具有數據緩沖功能的消息隊列與關聯任務通信。

     

    • 例子



    關閉窗口
    国产A片好看
  • <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>