關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于μc/OS-II的多傳感器測(cè)控系統(tǒng)研究

基于μc/OS-II的多傳感器測(cè)控系統(tǒng)研究

作者: 時(shí)間:2010-01-11 來(lái)源:網(wǎng)絡(luò) 收藏

3 軟件設(shè)計(jì)

3.1 任務(wù)分配

為了充分發(fā)揮操作在任務(wù)調(diào)度、任務(wù)管理、任務(wù)通信、時(shí)間管理和內(nèi)存管理等方面的優(yōu)勢(shì),首先必須根據(jù)需要實(shí)現(xiàn)的功能,合理的劃分任務(wù)和分配任務(wù)的優(yōu)先級(jí)。按溫濕度測(cè)控所要求實(shí)現(xiàn)的功能,將整個(gè)系統(tǒng)劃分為并行存在的任務(wù)層和中斷程序。μC/OS-II嵌入式實(shí)時(shí)操作系統(tǒng)中的任務(wù)狀態(tài)轉(zhuǎn)換如圖2所示。

圖2 μC/OS-II任務(wù)狀態(tài)轉(zhuǎn)換示意圖

多任務(wù)系統(tǒng)在運(yùn)行時(shí)每個(gè)任務(wù)好像獨(dú)立占用CPU一樣,因此系統(tǒng)必須為每個(gè)任務(wù)開(kāi)辟一塊內(nèi)存空間作為該任務(wù)的任務(wù)堆棧。該堆棧的作用是保存任務(wù)被切換前時(shí)CPU各寄存器的值以及系統(tǒng)堆棧的數(shù)據(jù)。在進(jìn)行任務(wù)切換時(shí)需要完成工作的主要步驟如下:①將當(dāng)前任務(wù)CPU所有的寄存器壓棧;②將CPU系統(tǒng)堆棧的數(shù)據(jù)全部拷貝到當(dāng)前任務(wù)的任務(wù)堆棧中;③ 得到下一個(gè)處于運(yùn)行態(tài)優(yōu)先級(jí)最高的任務(wù)的任務(wù)堆棧的指針;④ 恢復(fù)下一個(gè)任務(wù)的CPU寄存器的值;⑤ 恢復(fù)下一個(gè)任務(wù)的系統(tǒng)堆棧中的數(shù)據(jù);⑥ 通過(guò)中斷返回指令或函數(shù)返回指令,間接修改PC寄存器的值來(lái)進(jìn)行任務(wù)切換。在為μC/OS-II編寫(xiě)任務(wù)切換代碼時(shí)需要注意的是:μC/OS-II在每次發(fā)生中斷后都會(huì)產(chǎn)生任務(wù)調(diào)度,但在中斷結(jié)束后進(jìn)行的任務(wù)切換,不能調(diào)用普通任務(wù)切換函數(shù),這是因?yàn)樵谥袛噙^(guò)程中往往伴隨將CPU的狀態(tài)寄存器壓棧操作。

任務(wù)切換方法:凌陽(yáng)SPACE061A單片機(jī)有R1-R5 五個(gè)通用寄存器,還有1個(gè)SR(CPU狀態(tài)寄存器),再加上PC,總共有7個(gè)CPU內(nèi)部寄存器在任務(wù)切換時(shí)需要保存。μC/OS-II系統(tǒng)調(diào)用OSCtxSw( )來(lái)實(shí)現(xiàn)任務(wù)的切換。系統(tǒng)中并行存在的幾個(gè)任務(wù)按優(yōu)先級(jí)從高到低依次是:系統(tǒng)監(jiān)視任務(wù)、數(shù)據(jù)采集任務(wù)、數(shù)據(jù)處理任務(wù)、數(shù)據(jù)輸出任務(wù)、顯示任務(wù)。在實(shí)際系統(tǒng)中,每個(gè)任務(wù)都是無(wú)限循環(huán)的,分別實(shí)現(xiàn)某一特定的功能,由μC/OS-II內(nèi)核來(lái)進(jìn)行調(diào)度。系統(tǒng)監(jiān)視任務(wù)主要完成系統(tǒng)可靠性的監(jiān)管;數(shù)據(jù)采集任務(wù)主要完成溫度濕度氧濃度的檢測(cè)和A/D轉(zhuǎn)換;數(shù)據(jù)處理任務(wù)主要完成采集數(shù)據(jù)和設(shè)定數(shù)據(jù)的比較判定;數(shù)據(jù)輸出任務(wù)主要完成數(shù)據(jù)輸出給LCD、通過(guò)RS232傳輸給主機(jī)、以及輸出控制信號(hào)給繼電器電路,完成通風(fēng)、加熱、加濕等功能;顯示任務(wù)主要完成溫度濕度氧濃度參數(shù)的顯示。系統(tǒng)主程序任務(wù)流程圖如圖3所示。

圖3 系統(tǒng)主程序任務(wù)流程圖



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉