嵌入式系统实验报告三

上传人:cn****1 文档编号:500187772 上传时间:2023-06-22 格式:DOCX 页数:5 大小:12.43KB
返回 下载 相关 举报
嵌入式系统实验报告三_第1页
第1页 / 共5页
嵌入式系统实验报告三_第2页
第2页 / 共5页
嵌入式系统实验报告三_第3页
第3页 / 共5页
嵌入式系统实验报告三_第4页
第4页 / 共5页
嵌入式系统实验报告三_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《嵌入式系统实验报告三》由会员分享,可在线阅读,更多相关《嵌入式系统实验报告三(5页珍藏版)》请在金锄头文库上搜索。

1、实验报告三课程名称嵌入式系统及接口技术实验名称信号量管理API应用日期2011-6-17学号0825112028姓名 余昌泼班级计算机科学与技术B班一.实验要求:建立一个程序,程序要求如下:1. 创建3个任务,堆栈都为1KB。优先级分别为5、8、9.2. 任务运行时在屏幕上打印task ?is running! ,”? ”表示任务的优先级。3. 系统中有3个信号里sem1,sem2,sem3.4. 任务5需要获得sem1和sem2后才能打印 次信息,打印完成后释放两个信号量。5. 任务8需要获得sem1才能打印一次信息,打印兀成后释放sem1.6. 任务9需要获得sem2才能打印一次信息,打印

2、兀成后释放sem2.7. 任务8和任务9每次运行时需要查询sem3,如果sem3不可用,需要在屏幕上打印 信息;如果sem3可用则占用,运行结束后释放。8. 任务8运行10次后删除sem3.二.信号量管理API :6个信号量管理API(1) 创建信号量 OS_EVENT*OSSemCreate(WORD value)(2) 删除 OS_EVENT*OSSemDel(OS_EVENT*pevent,INT8U opt,INT8U*err)Opt信号量的删除条件OS_DEL_NO_PEND:已经没有任何任务在等待该信号量是,才删除OS_DEL_ALWAYS不管有没有任务在等待该信号量,立即删除。(

3、3) 请求信号量 void OSSemPend(OS_EVENT*pevent,INT16U timeout,INT8U*err)(4) 置位信号量 INT8U OSSemPost(OS_EVENT*pevent)(5) 查询信号量 INT16U OSSemAccept(OS_EVENT *pevent)是否就绪或发生(6) 获取信号量信息 INT8U OSSemQuery(OS_EVENT*pevent,OS_SEM_DATA*pdata) 多少任务位于等待队列,信号量的标识号码三:实验源代码:#include includes.h#define TASK_STK_SIZE 1024OS_S

4、TK Task_5_stkTASK_STK_SIZE;OS_STK Task_8_stkTASK_STK_SIZE;OS_STK Task_9_stkTASK_STK_SIZE;OS_EVENT *sem1;OS_EVENT *sem2;OS_EVENT *sem3;void Task5(void *pdata);void Task8(void *pdata);void Task9(void *pdata);void main(void)PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);OSInit();PC_DOSSaveReturn();PC_V

5、ectSet(uCOS,OSCtxSw);sem1=OSSemCreate(1);sem2=OSSemCreate(1);sem3=OSSemCreate(1);OSTaskCreate(Task5,(void *)0, &Task_5_stkTASK_STK_SIZE-1,5);OSTaskCreate(Task8,(void *)0, &Task_8_stkTASK_STK_SIZE-1,8);OSTaskCreate(Task9,(void *)0, &Task_9_stkTASK_STK_SIZE-1,9);OSStart();void Task5(void *pdata)INT8U

6、judge;INT8U err;INT16S key;INT8U x=1;INT8U y=1;OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);OS_EXIT_CRITICAL();for(;)/PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);OSSemPend(sem1,0,&err);OSSemPend(sem2,0,&err);PC_DispStr(x,y,Task5isrunning!,DISP_FGND_WHITE+DISP_BG

7、ND_RED+DISP_BLINK);OSSemPost(sem2);OSSemPost(sem1);/ x=(x+1)%(80-12);y=y+2; / y=(y+1)%(25-1);if(PC_GetKey(&key)=TRUE)if(key=0x1B)PC_DOSReturn();OSCtxSwCtr=0;OSTimeDlyHMSM(0,0,2,350);void Task8(void *pdata)INT8U x=22;INT8U y=1;INT8U judge;INT8U err;INT16S key;INT8U value;INT8U schtime=1;/OSTimeDlyHMS

8、M(0,0,1,0);OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);OS_EXIT_CRITICAL();for(;schtime+)if(schtime=10)OSSemPost(sem3);OSSemDel(sem3,OS_DEL_NO_PEND,&err);PC_DispStr(8,9,sem3isdelateintask8!”,DISP_FGND_WHITE+DISP_BGND_RED+DISP_BLINK);value=OSSemAccept(sem3);if(value

9、=0)PC_DispStr(x,y+2,sem3isnotavailabeintask8!”,DISP_FGND_WHITE+DISP_BGND_RED+DISP_BLINK);elseOSSemPost(sem3);/PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);OSSemPend(sem1,0,&err);PC_DispStr(x,y,Task8isrunning!,DISP_FGND_WHITE+DISP_BGND_GREEN+DISP_BLINK);OSSemPost(sem1);/ x=(x+1)%(80-12);y=y+2; / y=

10、(y+1)%(25-1);if(PC_GetKey(&key)=TRUE)if(key=0x1B)PC DOSReturn();OSCtxSwCtr=0;OSTimeDlyHMSM(0,0,2,350);void Task9(void *pdata)INT8U judge;INT8U err;INT16S key;INT8U x=45;INT8U y=1;INT8U value=1;/ OSTimeDlyHMSM(0,0,1,350);OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);

11、OS_EXIT_CRITICAL();for(;)value=OSSemAccept(sem3);if(value=0)PC_DispStr(x,y+2,sem3isnotavailabeintask9!,DISP_FGND_WHITE+DISP_BGND_BLUE+DISP_BLINK); else OSSemPost(sem3); /PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK); OSSemPend(sem2,0,&err); PC_DispStr(x,y,Task9isrunning!,DISP_FGND_WHITE+DISP_BGND_R

12、ED+DISP_BLINK); OSTimeDlyHMSM(0,0,2,350); OSSemPost(sem2); / x=(x+1)%(80-12); y=y+2; / y=(y+1)%(25-1); if(PC_GetKey(&key)=TRUE) if(key=0x1B) PC_DOSReturn(); OSCtxSwCtr=0;OSTimeDlyHMSM(0,0,2,350);四.实验截图:Task 5 is running? t Task 8 is running! Task 9 is running!ser)3 is not auailabe insem3 is not auai

13、labe in task9! ?rask 5 is running? ? Task 8 is runningf Task 9 is running!t ?rask 5 is running!? Task 8 is running?! insen3 is not auailabe in task?!? ? ser)3 is not auailabe in task8?!Task 5isrunning!Taslt8ispunning?! !Task9isrunning! ! ?Task 5isrunning?!Task8isrunning?!inTask9isrunning!intask9!?Ta

14、sk 5isrunning? ?Task8ispunning?!inlask9isrunning!?intask9? ? ?Task 5isrunning!Task8isrunning?!inlask9isrunning!?intask9!?Task 5 sen)3 Is de late in task8! ! ! nningf ! ! inTask 9 is running! ! ? in tas)9! ! ?Task 5 is running? ? Task 8 is punning? ? ? insen)3 is not auailabe in task9? ? ?Task 5isrunning!Task8isrunning?!intask8!Task 5isrunning!Task8isrunning?!intask8!Task 5isrunning? ?Task8ispunning?!intaskS!Task 5isrunning!Task8isrunning?!intask8!ser)3 is not auailabe in task8!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号