關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > 基于μc/OS-II的多傳感器測控系統研究

基于μc/OS-II的多傳感器測控系統研究

作者: 時間:2010-01-11 來源:網絡 收藏

3 軟件設計

3.1 任務分配

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

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

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

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

圖3 系統主程序任務流程圖



評論


相關推薦

技術專區(qū)

關閉