




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)項(xiàng)目名稱:用UC0SII實(shí)現(xiàn)任務(wù)間共享變量的無(wú)沖突訪問(wèn)及任務(wù)間的消息郵箱通信和隊(duì)列通信。實(shí)驗(yàn)?zāi)康模?、實(shí)現(xiàn)任務(wù)之間共享變量無(wú)沖突的訪問(wèn)2 、實(shí)現(xiàn)任務(wù)之間消息郵箱的通信3 、實(shí)現(xiàn)任務(wù)之間的消息隊(duì)列的通信實(shí)驗(yàn)內(nèi)容(實(shí)驗(yàn)過(guò)程及問(wèn)題的解決):實(shí)驗(yàn)主要參照了例題4.7、4.8、4.9,將3個(gè)例題合成一個(gè)任務(wù),滿足題目的要求。首先,設(shè)置了5個(gè)任務(wù),oneTask和foTask2個(gè)任務(wù)建立了互斥信號(hào)*Mutexp,用OSMutexPend(Mutexp,0,&err);和OSMutexPost(Mutexp),并延時(shí)等待一秒,進(jìn)行2個(gè)任務(wù)的共享變量無(wú)沖突訪問(wèn)控制。然后在hertask任務(wù)中,顯示
2、times的次數(shù),并使用消息郵箱OSMboxPost(Str_Box,s)給twoTask任務(wù)郵箱消息,twoTask接收到消息后,根據(jù)OSTimeGet()獲得系統(tǒng)時(shí)間范圍來(lái)判斷要傳送給stwoTask任務(wù)的字符,并使用OSQPost(Str_Q,s4)和OSQPend(Str_Q,0,&err);進(jìn)行消息隊(duì)列的通信。調(diào)試與結(jié)果測(cè)試分析:字符oneTaskrunning和foTaskrunning在互斥信號(hào)的條件下,一直循環(huán)配對(duì)出現(xiàn),而屏幕上的數(shù)字就是消息郵箱傳遞消息的次數(shù),而twoTaskrunning和stwoTaskrunning各出現(xiàn)了2次,是由于在消息隊(duì)列郵箱中設(shè)置了在10
3、0<OSTimeGet()<500和500<OSTimeGet()<900,分別在系統(tǒng)不同時(shí)間范圍內(nèi)顯示不同字符,用以區(qū)別。實(shí)驗(yàn)程序附錄:/*/$1*/#include"includes.h"#defineTASK_STK_SIZE512/任務(wù)堆棧長(zhǎng)度#defineN_MESSAGES128OS_STKStartTaskStkTASK_STK_SIZE;OS_STKoneTaskStkTASK_STK_SIZE;OS_STKfoTaskStkTASK_STK_SIZE;OS_STKherTaskStkTASK_STK_SIZE;OS_STKtwoTa
4、skStkTASK_STK_SIZE;OS_STKstwoTaskStkTASK_STK_SIZE;/定義消息隊(duì)列長(zhǎng)度/定義任務(wù)堆棧區(qū)/定義任務(wù)堆棧區(qū)/定義任務(wù)堆棧區(qū)/定義任務(wù)堆棧區(qū)/定義任務(wù)堆棧區(qū)/定義任務(wù)堆棧區(qū)INT16Skey;/用于退出的鍵char*s;char*ss;char*s1="oneTaskrunning"char*s2="foTaskrunning"/char*sss="OneTaskRequestsemaphore"char*s3="herTaskrunning"char*s4="t
5、woTaskrunning"char*s5="stwoTaskrunning"INT8Uerr;INT8Uy=0;INT32UTimes=0;/INT32UTimess=0;OS_EVENT*Str_Box;OS_EVENT*Str_Q;OS_EVENT*Mutexp;void*MsgGrpN_MESSAGES;voidStartTask(void*data);voidoneTask(void*data);voidfoTask(void*data);voidherTask(void*data);voidtwoTask(void*data);voidstwoTask
6、(void*data);/字符顯示位/定義事件控制塊/定義事件控制塊/定義消息指針數(shù)組/聲明起始任務(wù)/聲明任務(wù)/聲明任務(wù)/聲明任務(wù)/聲明任務(wù)/聲明任務(wù)/*主函數(shù)*/voidmain(void)OSInit();/初始化uCOS_IIPC_DOSSaveReturn();/保存Dos環(huán)境PC_VectSet(uCOS,OSCtxSw);/安裝uCOS_II中斷Str_Box=OSMboxCreate(void*)0);/創(chuàng)建郵箱型信號(hào)量Str_Q=OSQCreate(&MsgGrp0,N_MESSAGES);/創(chuàng)建消息隊(duì)列Mutexp=OSMutexCreate(1,&err);
7、/定義信號(hào)量OSTaskCreate(StartTask,/創(chuàng)建任務(wù)StartTask(void*)0,/給任務(wù)傳遞參數(shù)&StartTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂0);/使任務(wù)的優(yōu)先級(jí)別為0OSStart();/啟動(dòng)多任務(wù)管理/*任務(wù)StartTask*/voidStartTask(void*pdata)#ifOS_CRITICAL_METHOD=3OS_CPU_SRcpu_sr;#endifpdata=pdata;OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);/安裝時(shí)鐘中斷向量PC_SetTickRat
8、e(OS_TICKS_PER_SEC);/設(shè)置uCOS_II時(shí)鐘頻率OS_EXIT_CRITICAL();OSStatInit();/初始化統(tǒng)計(jì)任務(wù)OSTaskCreate(oneTask,/創(chuàng)建任務(wù)oneTask(void*)0,/給任務(wù)傳遞參數(shù)&oneTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂3);/使任務(wù)的優(yōu)先級(jí)別為3OSTaskCreate(foTask,/創(chuàng)建任務(wù)foTask(void*)0,/給任務(wù)傳遞參數(shù)&foTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂4);/使任務(wù)的優(yōu)先級(jí)別為4OSTaskCreate(herTask,
9、/創(chuàng)建任務(wù)herTask(void*)0,/給任務(wù)傳遞參數(shù)&herTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂5);/使任務(wù)的優(yōu)先級(jí)別為5OSTaskCreate(twoTask,/創(chuàng)建任務(wù)twoTask(void*)0,/給任務(wù)傳遞參數(shù)&twoTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂6);/使任務(wù)的優(yōu)先級(jí)別為6OSTaskCreate(stwoTask,/創(chuàng)建任務(wù)stwoTask(void*)0,/給任務(wù)傳遞參數(shù)&stwoTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂7);/使任務(wù)的優(yōu)先級(jí)別為7for(;)
10、如果按下Esc鍵則退出uCOS_IIif(PC_GetKey(&key)=TRUE)if(key=0x1B)PC_DOSReturn();OSTimeDlyHMSM(0,0,3,0);/等待3秒/*任務(wù)oneTask*/voidoneTask(void*pdata)# ifOS_CRITICAL_METHOD=3OS_CPU_SRcpu_sr;#endifpdata=pdata;for(;)/等待200 毫秒/OSTimeDlyHMSM(0,0,0,200);/PC_DispStr(10,+y,/sss,/DISP_BGND_BLACK+DISP_FGND_WHITE);OSMutex
11、Pend(Mutexp,0,&err);/請(qǐng)求信號(hào)量PC_DispStr(10,+y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);OSMutexPost(Mutexp);/發(fā)送信號(hào)量號(hào)量OSTimeDlyHMSM(0,0,1,0);/等待1秒voidfoTask(void*pdata)/*任務(wù) foTask*/# ifOS_CRITICAL_METHOD=3OS_CPU_SRcpu_sr;#endifpdata=pdata;for(;)OSMutexPend(Mutexp,0,&err);/請(qǐng)求信號(hào)量號(hào)量PC_DispStr(10,+y,s2,DIS
12、P_BGND_BLACK+DISP_FGND_WHITE);/for(Timess;Timess<2;Timess+)/OS_Sched();/OSMutexPost(Mutexp);/發(fā)送信號(hào)量OSTimeDlyHMSM(0,0,1,0);/等待1秒/*任務(wù) herTask*/voidherTask(void*pdata)# ifOS_CRITICAL_METHOD=3OS_CPU_SRcpu_sr;#endifpdata=pdata;for(;)sprintf(s,"%d",Times);/發(fā)送消息OSMboxPost(Str_Box,s);/*PC_DispSt
13、r(10,+y,Str_Box->OSEventPtr,/s,DISP_BGND_BLACK+DISP_FGND_WHITE);*/Times+;OSTimeDlyHMSM(0,0,1,0);/等待1秒voidtwoTask(void*pdata)/*任務(wù) twoTask*/# ifOS_CRITICAL_METHOD=3OS_CPU_SRcpu_sr;#endifpdata=pdata;for(;)ss=OSMboxPend(Str_Box,10,&err);PC_DispStr(10,+y,ss,DISP_BGND_BLACK+DISP_FGND_WHITE);if(OSTimeGet()>100&&OSTimeGet()<500)OSQPost(Str_Q,s4);/發(fā)送消息if(OSTimeGet()>500&&OSTimeGet()<900)OSQPostFront(Str_Q,s5);/發(fā)送消息OSTimeDlyHMSM(0,0,1,0);/等待1秒voidst
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌配件庫(kù)存管理制度
- 小區(qū)靜默日常管理制度
- 固定資產(chǎn)投資管理制度
- 醫(yī)院油料使用管理制度
- 各國(guó)海域使用管理制度
- 回遷小區(qū)車輛管理制度
- 公園醫(yī)療安全管理制度
- 針對(duì)持續(xù)集成環(huán)境的測(cè)試案例設(shè)計(jì)試題及答案
- 自動(dòng)化腳本設(shè)計(jì)中的最佳實(shí)踐試題及答案
- 幼兒廚房衛(wèi)生管理制度
- 《全瓷冠牙體預(yù)備》課件
- 行業(yè)調(diào)研報(bào)告:全球及中國(guó)琥珀聚糖行業(yè)研究及十四五規(guī)劃分析報(bào)告
- 2025年浙江科學(xué)中考預(yù)測(cè)卷(含答案)
- 刻章公司公章刻制管理制度-承接-登記-制作-檢驗(yàn)-保管-領(lǐng)取
- 高齡心房顫動(dòng)患者抗凝治療中國(guó)專家共識(shí)(2024)解讀課件
- 初中數(shù)學(xué)八年級(jí)三角形及三角形全等專題練習(xí)題(附含答案)
- 2024國(guó)際物流師考試內(nèi)容試題及答案
- 幼兒園籃球比賽方案
- 重點(diǎn)人口管理工作規(guī)定
- PLC技術(shù)在供水系統(tǒng)中的應(yīng)用與優(yōu)化
- 勞務(wù)分包方案投標(biāo)文件(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論