|
|||||||||||
| 技術(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 |
初手請教一個(gè)關(guān)于ucos2的編程問題。 |
| 作者:小蓋子 欄目:嵌入式系統(tǒng) |
設(shè)計(jì)一個(gè)有兩個(gè)任務(wù)MyTask和YouTask的應(yīng)用程序,任務(wù)MyTask的工作是每3秒在顯示器上顯示一個(gè)“M”,其優(yōu)先級定為0。任務(wù)YouTask的工作是每1秒顯示一個(gè)“Y”,其優(yōu)先級定為2。 最后在PC機(jī)上的結(jié)果為:“MYYYMYYYMYYYMYYYMYYY.......”但是第一個(gè)“M”和第一個(gè)“Y”是同時(shí)出現(xiàn),即“MY”出現(xiàn),接著下一秒是“Y”,再下一秒是“Y”。然后又是“MY”,以此循環(huán)。 那是否是這兩個(gè)任務(wù)被同時(shí)調(diào)用?任務(wù)MyTask的優(yōu)先級定為0,而任務(wù)YouTask的優(yōu)先級定為2,那“M”與“Y”怎么會(huì)同時(shí)出現(xiàn)? |
| 2樓: | >>參與討論 |
| 作者: mxh0506 于 2006/4/2 22:23:00 發(fā)布:
我的理解是: 這兩個(gè)任務(wù)每隔3秒在同一個(gè)系統(tǒng)滴嗒里轉(zhuǎn)為就緒狀態(tài),然后由系統(tǒng)調(diào)度程序先運(yùn)行優(yōu)先級高的任務(wù),而后再運(yùn)行優(yōu)先級低的任務(wù). 看起來像同時(shí),是因?yàn)檫\(yùn)行速度比較快.具體的先后順序只要看一個(gè)M和Y誰在前就知道了 |
|
| 3樓: | >>參與討論 |
| 作者: net_walker 于 2006/4/3 10:04:00 發(fā)布:
re 最好把程序貼出來看一下。 |
|
| 4樓: | >>參與討論 |
| 作者: mfk0833 于 2006/4/3 15:51:00 發(fā)布:
同意mxh0506的觀點(diǎn) 其實(shí)程序的運(yùn)行結(jié)果是正確的 |
|
| 5樓: | >>參與討論 |
| 作者: zusen 于 2006/4/5 0:33:00 發(fā)布:
試試 兩個(gè)同時(shí)顯視是對的,因?yàn)?M是3秒Y是1秒,當(dāng)Y運(yùn)行第三次時(shí)和M是同時(shí)的,但M的優(yōu)先級高于Y,所以M在Y的前面,你試試將Y優(yōu)先級設(shè)為0,如果他們同時(shí)出現(xiàn)是Y在前的話,就說明,3秒后他們是同步的,只不過是優(yōu)先級不同,所以顯視的前后不同 如果你想3秒時(shí)不同時(shí)顯視,那么你試試在 M的任務(wù)里打開Y的任務(wù),而不要在 MAIN 里 同時(shí)打開這兩個(gè)任務(wù),這只是理論,沒有試驗(yàn),如果你試了,請上來說說這個(gè)方法是否可行 |
|
| 6樓: | >>參與討論 |
| 作者: 小蓋子 于 2006/4/5 12:39:00 發(fā)布:
TO:zusen 首先十分感謝你的回帖! 我就是在 M的任務(wù)里打開Y的任務(wù),而不是在MAIN 里 同時(shí)打開這兩個(gè)任務(wù)的。結(jié)果就是3秒時(shí)“M”與“Y”同時(shí)顯示。然后我又試著在main()里 同時(shí)創(chuàng)建這兩個(gè)任務(wù)。且優(yōu)先級不變,可是結(jié)果卻大變,成了“YYMYYYMYYYMYYY....”難道在MAIN 里創(chuàng)建多個(gè)任務(wù)就不對嗎???? |
|
| 7樓: | >>參與討論 |
| 作者: winday.hou 于 2006/4/7 23:19:00 發(fā)布:
質(zhì)疑 如果像小蓋子說的那樣“在 M的任務(wù)里打開Y的任務(wù),而不是在MAIN 里 同時(shí)打開這兩個(gè)任務(wù)的”的話,那么第一個(gè)M顯示后要相隔一秒第一個(gè)Y 才會(huì)顯示。接著再一秒后“Y”,然后MY同時(shí)顯示。 如是"在main()里 同時(shí)創(chuàng)建這兩個(gè)任務(wù)"則顯示規(guī)律為: Y Y MY Y Y MY Y Y MY.....(中間間隔表示相隔一秒)。這是因?yàn)槭怯玫难訒r(shí)方法致使任務(wù)掛起。所以程序運(yùn)行一秒后Y任務(wù)先就緒,而M任務(wù)在三秒后就緒。 這是我的愚見,錯(cuò)誤之處請高手指點(diǎn)。 |
|
| 8樓: | >>參與討論 |
| 作者: zusen 于 2006/4/8 14:14:00 發(fā)布:
這樣做 因?yàn)?M是3秒,Y是1秒,如以他們都是一個(gè)同一時(shí)刻顯視的時(shí)間,如果你想兩個(gè)不同時(shí)顯視的話,只能用開關(guān)Y任務(wù)的方法了 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |