版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林藝術(shù)學(xué)院《勞動(dòng)教育II》2021-2022學(xué)年第一學(xué)期期末試卷
- 房產(chǎn)經(jīng)紀(jì)人返傭協(xié)議書范本模板
- 主播外出安全協(xié)議書范文范本
- 2024年大商鋪出租轉(zhuǎn)讓協(xié)議書模板范本
- 【初中數(shù)學(xué)】整式的加法與減法課件 2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊
- 2024年處理廢石協(xié)議書模板范本
- 資金代管協(xié)議書范文樣本
- 2025(新人教版)地理八年級下冊全冊復(fù)習(xí)知識清單 課件
- 吉林師范大學(xué)《數(shù)字剪輯創(chuàng)作》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林師范大學(xué)《量子力學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 江蘇省鎮(zhèn)江市第二中學(xué)2023-2024學(xué)年高二上學(xué)期期中考試數(shù)學(xué)試卷(無答案)
- 2023-2024學(xué)年全國初一下生物人教版期末考試試卷(含答案解析)
- 2024年甘肅省隴南市武都區(qū)人民法院招聘18人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 2024至2030年中國自動(dòng)車配件行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024-2030年中國虛擬專用網(wǎng)絡(luò)(VPN)行業(yè)市場行業(yè)發(fā)展分析及發(fā)展前景研究報(bào)告
- 檢驗(yàn)檢測機(jī)構(gòu)內(nèi)審員檢查表
- 2024中煤電力限公司面向中煤集團(tuán)內(nèi)部招聘15人高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 統(tǒng)編版(2024新版)七年級上冊歷史第二單元 夏商周時(shí)期:奴隸制王朝的更替和向封建社會(huì)的過渡 單元復(fù)習(xí)課件
- 高危兒規(guī)范化健康管理專家共識解讀
- 第13課《紀(jì)念白求恩》課件2024-2025學(xué)年統(tǒng)編版語文七年級上冊
- 食品安全的規(guī)章制度和食品操作流程
評論
0/150
提交評論