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