單片機只有一個CPU,一次只能執行一條指令,要處理多任務,相當于多個任務同時執行,只有靠分時。
如果沒有實時操作系統,自己做多任務處理很難的。
如果是采集通信數據處理輸入輸出這樣的常規任務,可以采用中斷方式,中斷服務程序處理實時任務,分析計算等任務放入主程序中。
多任務協調,可用狀態自動機模型處理。
普通單片機內部只有一個核,只能順序執行指令,同一時刻不能并行執行多條指令。
所謂的多任務,也是分時執行實現的。只是任務切換的非常快,人感覺不滿任務的切換,像同時執行一樣。
單片機要執行多任務,可以使用中斷的方式,也可以使用操作系統,目前有一些適用于單片機的小型操作系統。
單個核心不可能真正同時處理兩個任務。一般來說,單片機主要是處理外設中斷,產生中斷的時候,主循環是停止執行的,實際上是分時處理。如果要處理多個任務,最簡單的是用實時系統RTOS,創建多個任務即可,還可以定義優先級。如果要做到真正意義上的同時處理,就要用多核芯片。裸機系統可用片內定時器產生中斷來切換任務。
首先、單片機多任務處理方案有哪些?
1、采用實時操作系統rtos
也是我們所說的實時操作系統,rtos本身已經實現了多任務調度算法,我們不在關心如何調度的問題,我們只需要根據rtos的api來創建多任務即可。常見的rtos有freertos,uc/OS,華為liteOS,t-thread等等。
2、采用有限狀態機(State Machine)
也可通過一幅簡單的示意圖(也叫「狀態轉移圖」)表示出來:
在單片機程序設計中,如果一個系統需要處理一系列連續發生的任務,或在不同的模式下對輸入進行不同的處理,常常使用有限狀態機實現。例如測量、監測、控制等控制邏輯型應用。
其次、如何選擇單片機多任務調度方案
和rtos相比,狀態機占用的系統資源少,省去了系統調度定時器,沒有rtos占用的內存也少了,但是需要程序人員來完成多任務調度。
從上面可以看出,如果單片機資源很有限,多任務邏輯又比較簡單,建議選擇狀態機方法。如果多任務很復雜,功能比較多,單片機功能比較強,rtos占用的資源可以忽略不計,那就可以考慮采用rtos來完成。采用rtos可以比較容易的實現模塊化設計。但是rtos需要注意的是多任務間的優先級和多任務間的通信問題。
最后、單片機多任務如何選擇?
對于大部分編程來說其實一般的狀態機就夠了,小編也曾經十分推崇rtos,但是到后來發現,其實越是邏輯簡單,程序越是容易編寫,出錯的概率越小。大道至簡,小編現在大部分程序都是裸奔了,當然小編自創的異步編程也是相當的便利。
-
單片機
+關注
關注
6063文章
44925瀏覽量
647002
發布評論請先 登錄
單片機系統中的多任務多線程機制的實現
MSP430單片機實時多任務操作系統c源代碼

基于單片機狀態的多任務系統
如何使用51單片機進行多任務機制及應用

如何使用51單片機實現多任務機制的策略詳細資料說明

使用單片機實現道路交通燈多任務控制系統的課件說明

評論