|
從單片機“裸奔”程序,到基于時間片輪轉(zhuǎn)調(diào)度器程序,到UC/OS操作系統(tǒng)開發(fā),本人算是積累了一些經(jīng)驗;通過大量實踐還是覺得基于UC/OS 操作系統(tǒng)程序最簡單,效率最高。從一般應(yīng)用角度來說,UC/OS_II比UC/OS_III更簡單,程序更容易調(diào)試。后者,主要是在同優(yōu)先級任務(wù)出現(xiàn)時提供了時間片輪轉(zhuǎn)法調(diào)度器和中斷程序管理,多了一些可剪裁的便于程序調(diào)試和優(yōu)化的宏定義。UC/OS_III可堪稱作為程序員學(xué)習(xí)C語言編程的經(jīng)典之作。以下所說是基于已經(jīng)移植好了UC/OS 操作系統(tǒng)工程模板。這里不說移植的事,因為自己還沒有十分整明白。不過,各種風(fēng)格的工程模板很多,拿來做些修改就能用。
基于UC/OS 操作系統(tǒng)應(yīng)用中出現(xiàn)錯誤最多的是:1,死機;有時候是一開機就直接死機,有時候是跑幾分鐘之后死機。這種情況一般是:a),任務(wù)優(yōu)先級沒有設(shè)置合理;b),任務(wù)堆棧過小,導(dǎo)致內(nèi)存泄漏;c),時鐘節(jié)拍頻率過高,導(dǎo)致CPU負(fù)荷過重死機;可以通過,#define OS_TICKS_PER_SEC 200u /* Set the number of ticks in one second節(jié)拍:5ms 調(diào)整;d),每個任務(wù)都必須有合理的延時,以便交出CPU使用權(quán),讓低優(yōu)先級任務(wù)有機會使用CPU。
注意:每個任務(wù)中不能有過長時間的延時,否則會造成嚴(yán)重后果。比如,控制一臺電動機Y-△啟動,工作流程是先電動機星型運行8-12秒,再延時1s,再切換到電動機三角形運行。就這么個簡單玩意要真正做到控制自如,任意時刻可以操作啟停電機,還不是那么簡單的事。這個任務(wù)中就有如何處理長時間延時的問題。
|
|