單片機(jī)只有一個(gè)CPU,一次只能執(zhí)行一條指令,要處理多任務(wù),相當(dāng)于多個(gè)任務(wù)同時(shí)執(zhí)行,只有靠分時(shí)。
如果沒(méi)有實(shí)時(shí)操作系統(tǒng),自己做多任務(wù)處理很難的。
如果是采集通信數(shù)據(jù)處理輸入輸出這樣的常規(guī)任務(wù),可以采用中斷方式,中斷服務(wù)程序處理實(shí)時(shí)任務(wù),分析計(jì)算等任務(wù)放入主程序中。
多任務(wù)協(xié)調(diào),可用狀態(tài)自動(dòng)機(jī)模型處理。
普通單片機(jī)內(nèi)部只有一個(gè)核,只能順序執(zhí)行指令,同一時(shí)刻不能并行執(zhí)行多條指令。
所謂的多任務(wù),也是分時(shí)執(zhí)行實(shí)現(xiàn)的。只是任務(wù)切換的非???,人感覺(jué)不滿任務(wù)的切換,像同時(shí)執(zhí)行一樣。
單片機(jī)要執(zhí)行多任務(wù),可以使用中斷的方式,也可以使用操作系統(tǒng),目前有一些適用于單片機(jī)的小型操作系統(tǒng)。
單個(gè)核心不可能真正同時(shí)處理兩個(gè)任務(wù)。一般來(lái)說(shuō),單片機(jī)主要是處理外設(shè)中斷,產(chǎn)生中斷的時(shí)候,主循環(huán)是停止執(zhí)行的,實(shí)際上是分時(shí)處理。如果要處理多個(gè)任務(wù),最簡(jiǎn)單的是用實(shí)時(shí)系統(tǒng)RTOS,創(chuàng)建多個(gè)任務(wù)即可,還可以定義優(yōu)先級(jí)。如果要做到真正意義上的同時(shí)處理,就要用多核芯片。裸機(jī)系統(tǒng)可用片內(nèi)定時(shí)器產(chǎn)生中斷來(lái)切換任務(wù)。
首先、單片機(jī)多任務(wù)處理方案有哪些?
1、采用實(shí)時(shí)操作系統(tǒng)rtos
也是我們所說(shuō)的實(shí)時(shí)操作系統(tǒng),rtos本身已經(jīng)實(shí)現(xiàn)了多任務(wù)調(diào)度算法,我們不在關(guān)心如何調(diào)度的問(wèn)題,我們只需要根據(jù)rtos的api來(lái)創(chuàng)建多任務(wù)即可。常見(jiàn)的rtos有freertos,uc/OS,華為liteOS,t-thread等等。
2、采用有限狀態(tài)機(jī)(State Machine)
也可通過(guò)一幅簡(jiǎn)單的示意圖(也叫「狀態(tài)轉(zhuǎn)移圖」)表示出來(lái):
在單片機(jī)程序設(shè)計(jì)中,如果一個(gè)系統(tǒng)需要處理一系列連續(xù)發(fā)生的任務(wù),或在不同的模式下對(duì)輸入進(jìn)行不同的處理,常常使用有限狀態(tài)機(jī)實(shí)現(xiàn)。例如測(cè)量、監(jiān)測(cè)、控制等控制邏輯型應(yīng)用。
其次、如何選擇單片機(jī)多任務(wù)調(diào)度方案
和rtos相比,狀態(tài)機(jī)占用的系統(tǒng)資源少,省去了系統(tǒng)調(diào)度定時(shí)器,沒(méi)有rtos占用的內(nèi)存也少了,但是需要程序人員來(lái)完成多任務(wù)調(diào)度。
從上面可以看出,如果單片機(jī)資源很有限,多任務(wù)邏輯又比較簡(jiǎn)單,建議選擇狀態(tài)機(jī)方法。如果多任務(wù)很復(fù)雜,功能比較多,單片機(jī)功能比較強(qiáng),rtos占用的資源可以忽略不計(jì),那就可以考慮采用rtos來(lái)完成。采用rtos可以比較容易的實(shí)現(xiàn)模塊化設(shè)計(jì)。但是rtos需要注意的是多任務(wù)間的優(yōu)先級(jí)和多任務(wù)間的通信問(wèn)題。
最后、單片機(jī)多任務(wù)如何選擇?
對(duì)于大部分編程來(lái)說(shuō)其實(shí)一般的狀態(tài)機(jī)就夠了,小編也曾經(jīng)十分推崇rtos,但是到后來(lái)發(fā)現(xiàn),其實(shí)越是邏輯簡(jiǎn)單,程序越是容易編寫(xiě),出錯(cuò)的概率越小。大道至簡(jiǎn),小編現(xiàn)在大部分程序都是裸奔了,當(dāng)然小編自創(chuàng)的異步編程也是相當(dāng)?shù)谋憷?/p>
-
單片機(jī)
+關(guān)注
關(guān)注
6043文章
44623瀏覽量
638760
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
單片機(jī)系統(tǒng)中的多任務(wù)多線程機(jī)制的實(shí)現(xiàn)
51單片機(jī)多任務(wù)機(jī)制的實(shí)現(xiàn)策略研究
![51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>多任務(wù)</b>機(jī)制的實(shí)現(xiàn)策略研究](https://file.elecfans.com/web2/M00/49/21/pYYBAGKhtDqAJCehAAANsrkjAFo161.jpg)
單片機(jī)系統(tǒng)多任務(wù)實(shí)現(xiàn)方法
MSP430單片機(jī)實(shí)時(shí)多任務(wù)操作系統(tǒng)c源代碼
![MSP430<b class='flag-5'>單片機(jī)</b>實(shí)時(shí)<b class='flag-5'>多任務(wù)</b>操作系統(tǒng)c源代碼](https://file.elecfans.com/web2/M00/49/65/pYYBAGKhtEuAYdlTAAAWZyzkV18503.jpg)
基于單片機(jī)狀態(tài)的多任務(wù)系統(tǒng)
51單片機(jī)多任務(wù)操作系統(tǒng)的原理與實(shí)現(xiàn)
基于實(shí)時(shí)操作系統(tǒng)的單片機(jī)多任務(wù)應(yīng)用程序設(shè)計(jì)
![基于實(shí)時(shí)操作系統(tǒng)的<b class='flag-5'>單片機(jī)</b><b class='flag-5'>多任務(wù)</b>應(yīng)用程序設(shè)計(jì)](https://file.elecfans.com/web2/M00/4A/2B/pYYBAGKhvKSAEOj7AAAyFQ9DvMc659.png)
如何使用51單片機(jī)進(jìn)行多任務(wù)機(jī)制及應(yīng)用
![如何使用51<b class='flag-5'>單片機(jī)</b>進(jìn)行<b class='flag-5'>多任務(wù)</b>機(jī)制及應(yīng)用](https://file.elecfans.com/web1/M00/8E/4A/o4YBAFy0I92Abi1EAAQz8aaMokU511.png)
如何使用51單片機(jī)實(shí)現(xiàn)多任務(wù)機(jī)制的策略詳細(xì)資料說(shuō)明
![如何使用51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>多任務(wù)</b>機(jī)制的策略詳細(xì)資料說(shuō)明](https://file.elecfans.com/web1/M00/9C/DB/o4YBAF0u2ReAaL1rAAFWwS6BGq4206.png)
使用單片機(jī)實(shí)現(xiàn)道路交通燈多任務(wù)控制系統(tǒng)的課件說(shuō)明
![使用<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)道路交通燈<b class='flag-5'>多任務(wù)</b>控制系統(tǒng)的課件說(shuō)明](https://file.elecfans.com/web1/M00/BA/34/o4YBAF6YJQaAeO6FAAIRHyqr-os698.png)
評(píng)論