版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ù)間的消息郵箱通信和隊(duì)列通信。實(shí)驗(yàn)?zāi)康模?、實(shí)現(xiàn)任務(wù)之間共享變量無沖突的訪問2 、實(shí)現(xiàn)任務(wù)之間消息郵箱的通信3 、實(shí)現(xiàn)任務(wù)之間的消息隊(duì)列的通信實(shí)驗(yàn)內(nèi)容(實(shí)驗(yà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ù)的共享變量無沖突訪問控制。然后在hertask任務(wù)中,顯示
2、times的次數(shù),并使用消息郵箱OSMboxPost(Str_Box,s)給twoTask任務(wù)郵箱消息,twoTask接收到消息后,根據(jù)OSTimeGet()獲得系統(tǒng)時(shí)間范圍來判斷要傳送給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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人股份無償轉(zhuǎn)讓與公司治理協(xié)議4篇
- 二零二五年度民宿客棧資產(chǎn)租賃管理合同樣本4篇
- 2025年裝修工程環(huán)境保護(hù)責(zé)任書2篇
- 通訊錄系統(tǒng)c課程設(shè)計(jì)
- 2025年智能穿戴設(shè)備銷售與分銷合同范本
- 魔t的設(shè)計(jì)課程設(shè)計(jì)
- 2025年鐵路貨物運(yùn)輸操作規(guī)范合同6篇
- 二零二五年度面條產(chǎn)品綠色包裝研發(fā)與應(yīng)用合同4篇
- 二零二五年美容院美容院美容院?jiǎn)T工績(jī)效考核及薪酬合同4篇
- 2025年度個(gè)人房屋裝修貸款擔(dān)保合同范本12篇
- PEP小學(xué)六年級(jí)英語上冊(cè)選詞填空專題訓(xùn)練
- 古建筑修繕項(xiàng)目施工規(guī)程(試行)
- GA 844-2018防砸透明材料
- 化學(xué)元素周期表記憶與讀音 元素周期表口訣順口溜
- 非人力資源經(jīng)理的人力資源管理培訓(xùn)(新版)課件
- MSDS物質(zhì)安全技術(shù)資料-201膠水
- 鉬氧化物還原過程中的物相轉(zhuǎn)變規(guī)律及其動(dòng)力學(xué)機(jī)理研究
- (完整word)2019注冊(cè)消防工程師繼續(xù)教育三科試習(xí)題及答案
- 《調(diào)試件現(xiàn)場(chǎng)管理制度》
- 社區(qū)治理現(xiàn)代化課件
- 代持房屋協(xié)議書
評(píng)論
0/150
提交評(píng)論