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