a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機多任務框架設計

單片機多任務框架設計

作者:高林,黃敏,羅江(江西方興科技有限公司,南昌 330025) 時間:2021-11-15 來源:電子產品世界 收藏
編者按:單片機將各功能部件集成在一塊芯片上,集成度高,體積小,可以滿足控制和運行的需要。單片機有豐富的輸入輸出管腳,很容易構成各種規模的計算機應用系統。鑒于單片機的特點,單片機廣泛應用,種類繁多。對應不同的單片機系列,簡單可靠的嵌入式程序框架便于開發、移植以及維護,縮短產品的程序開發周期。

應用廣泛,內部資源搭配豐富。雖然豐儉由人,但是在選型的時候,我們往往會選擇性價比相對較高的。選定了,程序設計工作量也不小。如何方便快捷的移植、開發調試以及維護,可以實現是程序設計人員追求的縮短設計周期的目標。

本文引用地址:http://www.j9360.com/article/202111/429669.htm

1   框架分析

跑系統的單片機可以更有效支持多任務,完成更加復雜的任務,但需要更大的存儲空間用于系統程序和用戶程序;裸跑的單片機只能進行單任務,對存儲空間需求較低。在這里主要研究一種多任務程序框架設計,讓裸奔的單片機跑出操作系統的感覺,單片機雖然是裸機奔跑,但是往往現實的需要決定了我們必須跑出操作系統的姿態——多任務程序。

系統實現多任務,最重要的特點是分時和消息傳遞與處理。引用一個網友的總結:stateMachine +timerTick + queue。

queue,在設計框架時需要設計一個消息隊列貫穿整個系統,把這個隊列機制做成通用模塊,在不同的程序執行模塊中調用。消息隊列用于緩沖事件,事件不知道什么時候會到來,也不能保證來了就能迅速得到處理,使用消息隊列,可以保證每個事件都能處理到。消息通常分為兩種類型:①外部事件收集,然后存儲到隊列,如按鍵、IO 中斷、時鐘任務等硬件發出;②在任務處理過程中,一個任務觸發新的任務,例如在藍牙遙控器中,接收解析串口數據的任務中發出按鍵消息。timerTick,系統的時鐘基準。用一個定時器來建立通用定時器任務,管理不同任務相關的多個定時器,在定時到達時,由定時器任務發出消息。

stateMachine,任務收到消息后,根據當前狀態決定如何處理消息。

2   框架設計

我們以包含按鍵開關一個定時1 s 的LED 燈閃爍為例,示例包含框架的全部內容。

圖1是程序流程圖。

image.pngimage.png

圖1 程序流程

首先是消息隊列、時鐘任務、消息的定義:

image.png

其次是從頂層主程序設計開始,再到各功能模塊的設計:

image.png

1)頂層主程序設計,系統開始進行硬件初始化、任務初始化、時鐘初始化;然后在1 個循環中不停地進行循環事件收集、時間事件收集和處理、消息隊列時間處理。

image.png

2)在時鐘基準的設置上,建立1 個1 ms 的定時器,在定時器中斷里判斷開啟的定時任務是否發生,滿足條件設置定時標志,同時關閉此項定時任務。

image.png

3)循環事件收集:在循環中判斷是否有按鍵按下,如有按鍵按下,發送按鍵消息。

image.png

4)時間事件收集:判斷定時服務里設置的定時標志做相關的時間事件處理。

image.png

5)消息隊列處理:判斷消息隊列是否為空,當不為空時進行消息處理。

image.png

image.png

image.png

3   任務添加

如何根據實際應用的需要在主體結構中加入新的任務,如下以串口通信為例。

1)添加消息定義:在消息定義enumEventList 里面加入串口功能定義。

2)添加消息收集程序:在串口中斷里接收數據,并把數據寫到串口數據緩沖器,在循環事件收集里面進行串口數據分析,根據收到的數據完整性和協議分析,發出串口功能的消息到消息隊列。

3)添加消息處理程序:在消息隊列處理里面加入串口功能對應的處理功能。

4   結束語

整體看來我們的程序框架就成了通用的模板了,根據自己選定的MCU,選個定時器,再添加自己的事件收集、事件處理以及時間任務即可,非常靈活方便實用。

參考文獻:

[1] 李寧.基于MDK的STM32處理器開發應用[M].北京:北京航空航天大學出版社,2008.

[2] LABROSSE J J.嵌入式實時操作系統μC/OS-II[M].邵貝貝,等,譯.北京:北京航空航天大學出版社,2003.

[3] 孫涵芳,徐愛卿.MCS-51/96系列單片機原理與應用[M].北京:北京航空航天大學出版社,1988.

[4] 郭天祥.新概念51單片機C語言教程:入門、提高、開發、拓展全攻略.北京:電子工業出版社,2009.

[5] 徐愛鈞.Keil C51單片機高級語言應用編程技術.北京:電子工業出版社,2015.

(本文來源于《電子產品世界》雜志2021年10月期)



評論


相關推薦

技術專區

關閉