[發明專利]一種基于消息隊列的單片機操作系統實現方法有效
| 申請號: | 201510071580.8 | 申請日: | 2015-02-11 |
| 公開(公告)號: | CN104598208A | 公開(公告)日: | 2015-05-06 |
| 發明(設計)人: | 李俊畫;馬劍;朱永;莫平勇 | 申請(專利權)人: | 四川天邑康和通信股份有限公司 |
| 主分類號: | G06F9/38 | 分類號: | G06F9/38 |
| 代理公司: | 成都金英專利代理事務所(普通合伙) 51218 | 代理人: | 袁英 |
| 地址: | 610000 四川省*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 消息 隊列 單片機 操作系統 實現 方法 | ||
1.一種基于消息隊列的單片機操作系統實現方法,它采用C語言編寫程序代碼,使用Keil公司的編譯器進行編譯生成二進制執行文件,其特征在于:它包括以下步驟:
S1:定義消息結構類型,包括消息字、參數A和參數B;
S2:定義消息隊列,先根據芯片的內存資源和任務處理情況定義消息隊列長度,再定義一個數據類型為消息結構的數組作為消息隊列,用于存儲消息及參數;
S3:?定義消息隊列的存取指針,初始化時將存取指針都設為零,用于指示消息在存入和讀取時在消息隊列中的位置,當存入和讀取指針相同時,表示沒有消息;
S4:發送消息到消息隊列,包括以下子步驟:
S41:按照消息存入指針所指示的位置將消息存入消息隊列,存入指針增量;
S42:判斷存入指針是否達到最大值,若是則將存入指針設為零;
S43:判斷消息隊列是否存滿,若是則意味著未處理的消息將被覆蓋,從而發生系統級錯誤,則進行系統復位來避免系統運行錯誤;
S5:從消息隊列中讀取消息和參數,包括以下子步驟:
S51:芯片看門狗清零;
S52:判斷是否有待處理消息,若有待處理消息則進行步驟S53,若沒有待處理消息則返回步驟S51;
S53:按照消息讀取指針所指示的位置從消息數組中讀取消息,讀取指針增量;
S54:判斷讀取指針是否為最大值,若是則將讀取指針設為零,若不是則結束操作;
S6:主函數循環讀取消息,當讀取到消息及參數后,根據消息值調用相應的任務處理函數,待任務處理結束后再進行下一次循環。
2.根據權利要求1所述的一種基于消息隊列的單片機操作系統實現方法,其特征在于:所述步驟S1、S2和S3,定義了消息隊列的數據結構,包括消息結構數據類型、消息隊列數組和消息隊列存取指針,所述的消息隊列的數組組元數量根據單片機硬件資源、時鐘頻率和處理的任務量進行設定。
3.根據權利要求1所述的一種基于消息隊列的單片機操作系統實現方法,其特征在于:所述步驟S4,使用函數實現消息的存入,以保證最先存入的消息能被最先讀取,由中斷服務程序和任務處理程序調用該函數,用于通知相應的任務處理函數執行相應的任務程序。
4.根據權利要求1所述的一種基于消息隊列的單片機操作系統實現方法,其特征在于:所述步驟S5,使用函數實現消息的讀取,以保證最先存入的消息能被最先讀取,由主函數調用該函數,用于從消息隊列中獲取消息。
5.根據權利要求1所述的一種基于消息隊列的單片機操作系統實現方法,其特征在于:所述步驟S6,由C語言編寫的主函數無限循環讀取消息隊列的消息,然后根據讀取的消息值調用相應的任務處理函數,來執行任務處理程序,任務處理函數返回后進行下一次循環來讀取消息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于四川天邑康和通信股份有限公司;,未經四川天邑康和通信股份有限公司;許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510071580.8/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用于合并和重用門戶信息的方法和系統
- 下一篇:一種信息處理方法及電子設備





