回想一下我們以前在使用 51、AVR、STM32 單片機(jī)裸機(jī)(未使用系統(tǒng))的時(shí)候一般都是在main 函數(shù)里面用while(1)做一個(gè)大循環(huán)來(lái)完成所有的處理,即應(yīng)用程序是一個(gè)無(wú)限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成所需的處理。有時(shí)候我們也需要中斷中完成一些處理。相對(duì)于多任務(wù)系統(tǒng)而言,這個(gè)就是單任務(wù)系統(tǒng),也稱作前后臺(tái)系統(tǒng),中斷服務(wù)函數(shù)作為前臺(tái)程序,大循環(huán)while(1)作為后臺(tái)程序,如圖所示:
前后臺(tái)系統(tǒng)的實(shí)時(shí)性差,前后臺(tái)系統(tǒng)各個(gè)任務(wù)(應(yīng)用程序)都是排隊(duì)等著輪流執(zhí)行,不管你這個(gè)程序現(xiàn)在有多緊急,沒(méi)輪到你就只能等著!相當(dāng)于所有任務(wù)(應(yīng)用程序)的優(yōu)先級(jí)都是一樣的。但是前后臺(tái)系統(tǒng)簡(jiǎn)單啊,資源消耗也少??!在稍微大一點(diǎn)的嵌入式應(yīng)用中前后臺(tái)系統(tǒng)就明顯力不從心了,此時(shí)就需要多任務(wù)系統(tǒng)出馬了。
多任務(wù)系統(tǒng)會(huì)把一個(gè)大問(wèn)題(應(yīng)用)“分而治之”,把大問(wèn)題劃分成很多個(gè)小問(wèn)題,逐步的把小問(wèn)題解決掉,大問(wèn)題也就隨之解決了,這些小問(wèn)題可以單獨(dú)的作為一個(gè)小任務(wù)來(lái)處理。這些小任務(wù)是并發(fā)處理的,注意,并不是說(shuō)同一時(shí)刻一起執(zhí)行很多個(gè)任務(wù),而是由于每個(gè)任務(wù)執(zhí)行的時(shí)間很短,導(dǎo)致看起來(lái)像是同一時(shí)刻執(zhí)行了很多個(gè)任務(wù)一樣。多個(gè)任務(wù)帶來(lái)了一個(gè)新的問(wèn)題,究竟哪個(gè)任務(wù)先運(yùn)行,哪個(gè)任務(wù)后運(yùn)行呢?完成這個(gè)功能的東西在RTOS 系統(tǒng)中叫做任務(wù)調(diào)度器。不同的系統(tǒng)其任務(wù)調(diào)度器的實(shí)現(xiàn)方法也不同,比如 FreeRTOS是一個(gè)搶占式的實(shí)時(shí)多任務(wù)系統(tǒng),那么其任務(wù)調(diào)度器也是搶占式的,運(yùn)行過(guò)程如圖所示:
高優(yōu)先級(jí)的任務(wù)可以打斷低優(yōu)先級(jí)任務(wù)的運(yùn)行而取得 CPU的使用權(quán),這樣就保證了那些緊急任務(wù)的運(yùn)行。這樣我們就可以為那些對(duì)實(shí)時(shí)性要求高的任務(wù)設(shè)置一個(gè)很高的優(yōu)先級(jí),比如自動(dòng)駕駛中的障礙物檢測(cè)任務(wù)等。高優(yōu)先級(jí)的任務(wù)執(zhí)行完成以后重新把CPU 的使用權(quán)歸還給低優(yōu)先級(jí)的任務(wù),這個(gè)就是搶占式多任務(wù)系統(tǒng)的基本原理。
-
單片機(jī)
+關(guān)注
關(guān)注
6063文章
44929瀏覽量
647217 -
嵌入式
+關(guān)注
關(guān)注
5141文章
19544瀏覽量
315205 -
cpu
+關(guān)注
關(guān)注
68文章
11042瀏覽量
216051 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
490瀏覽量
63786 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3322瀏覽量
58760
發(fā)布評(píng)論請(qǐng)先 登錄
轉(zhuǎn):第10章 FreeRTOS任務(wù)管理
在STM32下完成FreeRTOS的多任務(wù)程序開(kāi)發(fā)
如何去實(shí)現(xiàn)基于stm32的FreeRTOS多任務(wù)程序
如何使用CubeMX快速生成FreeRTOS系統(tǒng)并實(shí)現(xiàn)多任務(wù)處理?
多任務(wù)系統(tǒng)與單任務(wù)系統(tǒng)分別是指什么
淺析FreeRTOS任務(wù)系統(tǒng)
FreeRTOS多任務(wù)系統(tǒng)的相關(guān)資料推薦
如何在STM32下完成一個(gè)基于FreeRTOS的多任務(wù)程序
任務(wù)裸機(jī)系統(tǒng)與多任務(wù)系統(tǒng)的區(qū)別在哪
什么是多任務(wù)系統(tǒng)?FreeRTOS任務(wù)與協(xié)程簡(jiǎn)析
keil下的FreeRtos多任務(wù)程序?qū)W習(xí)
stm32基于FreeRTOS的多任務(wù)程序

(一)FreeRTOS學(xué)習(xí)之FreeRTOS任務(wù)基礎(chǔ)知識(shí)

基于FreeRTOS的STM32多任務(wù)程序

評(píng)論