|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
ucos中關(guān)于等待超時(shí)的問題 |
| 作者:珊瑚蟲 欄目:嵌入式系統(tǒng) |
邵貝貝那本書P163 #if OS_EVENT_EN > 0 void OS_EventTO (OS_EVENT *pevent) { if ((pevent->OSEventTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0x00) { pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY; } OSTCBCur->OSTCBStat = OS_STAT_RDY; /* Set status to ready */ OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0; /* No longer waiting for event */ } #endif 有兩個(gè)問題: 1.這里為什么是OSTCBCur,OSTCBCur應(yīng)該是指當(dāng)前正在運(yùn)行的任務(wù),而這里我覺得應(yīng)該是等待某事件而發(fā)生超時(shí)的任務(wù),它肯定不應(yīng)是當(dāng)前任務(wù)啊,因?yàn)樗幱诘却隣顟B(tài)。 2.由于等待超時(shí)將任務(wù)置為就緒態(tài),除了將OSTCBStat 賦值為OS_STAT_RDY外,我覺得還應(yīng)該將這個(gè)任務(wù)放進(jìn)就緒隊(duì)列啊? 各位大俠指點(diǎn)一下,謝謝了! |
| 2樓: | >>參與討論 |
| 作者: high 于 2005/6/20 19:08:00 發(fā)布:
小蟲子真好學(xué) 1.他們是同一個(gè)任務(wù). 關(guān)鍵:此時(shí)任務(wù)已經(jīng)wakeup了. tips:OSEventTo是OS***Pend調(diào)用的.在OSSched()后面. OS***Pend() { OSSched(); ... OSEventTo(); ... } OSSched()發(fā)生任務(wù)調(diào)度,函數(shù)返回時(shí)沒有回到本任務(wù)而是跑去其他任務(wù). 當(dāng)超時(shí)以及其他任務(wù)的OS***Post(),此任務(wù)再次得到運(yùn)行權(quán)利時(shí).本任務(wù)從OSSched()返回,繼而往下運(yùn)行OSEventTo()...;所以此時(shí)一定是已經(jīng)wakeup了. 2.it is running. |
|
| 3樓: | >>參與討論 |
| 作者: ga333mao 于 2005/7/13 8:57:00 發(fā)布:
re OSTCBCur應(yīng)該就是等待某事件而發(fā)生超時(shí)的任務(wù),在這里。 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |