




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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ù)建立了互斥信號*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é)果測試分析:字符oneTaskrunning和foTaskrunning在互斥信號的條件下,一直循環(huán)配對出現(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ù)堆棧長度#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ì)列長度/定義任務(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)建郵箱型信號量Str_Q=OSQCreate(&MsgGrp0,N_MESSAGES);/創(chuàng)建消息隊(duì)列Mutexp=OSMutexCreate(1,&err);
7、/定義信號量OSTaskCreate(StartTask,/創(chuàng)建任務(wù)StartTask(void*)0,/給任務(wù)傳遞參數(shù)&StartTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂0);/使任務(wù)的優(yōu)先級別為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)先級別為3OSTaskCreate(foTask,/創(chuàng)建任務(wù)foTask(void*)0,/給任務(wù)傳遞參數(shù)&foTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂4);/使任務(wù)的優(yōu)先級別為4OSTaskCreate(herTask,
9、/創(chuàng)建任務(wù)herTask(void*)0,/給任務(wù)傳遞參數(shù)&herTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂5);/使任務(wù)的優(yōu)先級別為5OSTaskCreate(twoTask,/創(chuàng)建任務(wù)twoTask(void*)0,/給任務(wù)傳遞參數(shù)&twoTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂6);/使任務(wù)的優(yōu)先級別為6OSTaskCreate(stwoTask,/創(chuàng)建任務(wù)stwoTask(void*)0,/給任務(wù)傳遞參數(shù)&stwoTaskStkTASK_STK_SIZE-1,/設(shè)置任務(wù)堆棧棧頂7);/使任務(wù)的優(yōu)先級別為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);/請求信號量PC_DispStr(10,+y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);OSMutexPost(Mutexp);/發(fā)送信號量號量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);/請求信號量號量PC_DispStr(10,+y,s2,DIS
12、P_BGND_BLACK+DISP_FGND_WHITE);/for(Timess;Timess<2;Timess+)/OS_Sched();/OSMutexPost(Mutexp);/發(fā)送信號量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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)膝在摩托車運(yùn)動(dòng)中的防風(fēng)保暖設(shè)計(jì)考核試卷
- 電聲器件在工業(yè)自動(dòng)化檢測中的應(yīng)用考核試卷
- 液力傳動(dòng)裝置的動(dòng)態(tài)性能評估考核試卷
- 糖果企業(yè)產(chǎn)品差異化與市場競爭考核試卷
- 水產(chǎn)品干腌制加工過程中的環(huán)境風(fēng)險(xiǎn)評估與管理考核試卷
- 蘭州博文科技學(xué)院《食品原料標(biāo)準(zhǔn)化》2023-2024學(xué)年第二學(xué)期期末試卷
- 珠海三中高二下學(xué)期期中考試英語試題
- 寧夏工商職業(yè)技術(shù)學(xué)院《經(jīng)典影片解讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 西藏山南地區(qū)洛扎縣2024-2025學(xué)年數(shù)學(xué)五年級第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含答案
- 天津市薊州區(qū)第三聯(lián)合學(xué)區(qū)2024-2025學(xué)年初三第一次模擬聯(lián)考物理試題含解析
- GB 11984-1989氯氣安全規(guī)程
- 兒科病歷書寫規(guī)范-課件
- 湯姆索亞歷險(xiǎn)記閱讀選擇題課件
- 快餐店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 府谷縣大昌汗鄉(xiāng)張三溝煤礦煤炭資源整合項(xiàng)目(重大變動(dòng))環(huán)評報(bào)告書
- 電動(dòng)給水泵技術(shù)規(guī)范
- 三筆字訓(xùn)練教程課件
- 高一家長會(huì)課件(原創(chuàng))(共44張PPT)
- (完整word)2019注冊消防工程師繼續(xù)教育三科試習(xí)題及答案
- 2021版模板作業(yè)安全防護(hù)技術(shù)措施
- 三年級下冊數(shù)學(xué)教案 《平行與相交》 青島版(五四學(xué)制)
評論
0/150
提交評論