嵌入式测控系统实习报告.docx

上传人:b****6 文档编号:6622197 上传时间:2023-01-08 格式:DOCX 页数:11 大小:122.27KB
下载 相关 举报
嵌入式测控系统实习报告.docx_第1页
第1页 / 共11页
嵌入式测控系统实习报告.docx_第2页
第2页 / 共11页
嵌入式测控系统实习报告.docx_第3页
第3页 / 共11页
嵌入式测控系统实习报告.docx_第4页
第4页 / 共11页
嵌入式测控系统实习报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

嵌入式测控系统实习报告.docx

《嵌入式测控系统实习报告.docx》由会员分享,可在线阅读,更多相关《嵌入式测控系统实习报告.docx(11页珍藏版)》请在冰豆网上搜索。

嵌入式测控系统实习报告.docx

嵌入式测控系统实习报告

 

嵌入式测控系统实习报告

 

课题名称:

嵌入式测控系统

学院:

电气信息工程学院

专业:

测控技术与仪器专业

姓名:

王yiyang

班级:

测控09—3

学号:

220号

指导教师:

武海ya

 

1、实习目的

1)学习建立多任务系统

2)熟练程序设计

3)熟练运用borlandcc操作系统

4)熟练运用visalc++操作系统

2、实习内容

建立4个任务,其中任务1显示院系,任务2显示班级学号,任务3显示姓名,任务4显示当前日期和时间。

3、程序设计

#include

#include

#include

#include

#include

#include

#include

 

#include"E:

\ucos-ii\software\ucos-ii\ix86l\bc45\os_cpu.h"

#include"E:

\ucos-ii\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE\os_cfg.h"

#include"E:

\ucos-ii\software\ucos-ii\source\ucos_ii.h"

#include"E:

\ucos-ii\software\blocks\pc\bc45\pc.h"

/*

*********************************************************************************************************

*CONSTANTS

*********************************************************************************************************

*/

#defineTASK_STK_SIZE512/*Sizeofeachtask'sstacks(#ofWORDs)*/

#defineN_TASKS4/*Numberofidenticaltasks*/

/*

*********************************************************************************************************

*VARIABLES

*********************************************************************************************************

*/

OS_STKTaskStk[N_TASKS][TASK_STK_SIZE];/*Tasksstacks*/

OS_STKTaskStartStk[TASK_STK_SIZE];

charTaskData[N_TASKS];/*Parameterstopasstoeachtask*/

OS_EVENT*RandomSem;

/*

*********************************************************************************************************

*FUNCTIONPROTOTYPES

*********************************************************************************************************

*/

voidTask(void*data);/*Functionprototypesoftasks*/

voidTaskStart(void*data);/*FunctionprototypesofStartuptask*/

staticvoidTaskStartCreateTasks(void);

staticvoidTaskStartDispInit(void);

staticvoidTaskStartDisp(void);

/*$PAGE*/

/*

*********************************************************************************************************

*MAIN

*********************************************************************************************************

*/

voidmain(void)

{

PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);/*Clearthescreen*/

OSInit();/*InitializeuC/OS-II*/

PC_DOSSaveReturn();/*SaveenvironmenttoreturntoDOS*/

PC_VectSet(uCOS,OSCtxSw);/*InstalluC/OS-II'scontextswitchvector*/

/*

RandomSem=OSSemCreate

(1);

*//*Randomnumbersemaphore*/

OSTaskCreate(TaskStart,(void*)0,&TaskStartStk[TASK_STK_SIZE-1],0);

OSStart();/*Startmultitasking*/

}

 

/*

*********************************************************************************************************

*STARTUPTASK

*********************************************************************************************************

*/

//voidTaskStart(void*pdata)

//{

//#ifOS_CRITICAL_METHOD==3/*AllocatestorageforCPUstatusregister*/

//OS_CPU_SRcpu_sr;

//#endif

//chars[100];

//INT16Skey;

 

//pdata=pdata;/*Preventcompilerwarning*/

//TaskStartDispInit();/*Initializethedisplay*/

//OS_ENTER_CRITICAL();

//PC_VectSet(0x08,OSTickISR);/*InstalluC/OS-II'sclocktickISR*/

//PC_SetTickRate(OS_TICKS_PER_SEC);/*Reprogramtickrate*/

//OS_EXIT_CRITICAL();

//OSStatInit();/*InitializeuC/OS-II'sstatistics*/

//TaskStartCreateTasks();/*Createalltheapplicationtasks*/

//for(;;)

//{

//TaskStartDisp();/*Updatethedisplay*/

 

//if(PC_GetKey(&key)==TRUE)

//{/*Seeifkeyhasbeenpressed*/

//if(key==0x1B)

//{/*Yes,seeifit'stheESCAPEkey*/

//PC_DOSReturn();/*ReturntoDOS*/

//}

//}

//OSCtxSwCtr=0;/*Clearcontextswitchcounter*/

//OSTimeDlyHMSM(0,0,1,0);/*Waitonesecond*/

//}

//}

/*$PAGE*/

/*

*********************************************************************************************************

*INITIALIZETHEDISPLAY

*********************************************************************************************************

*/

staticvoidTaskStartDispInit(void)

{

/*1111111111222222222233333333334444444444555555555566666666667777777777*/

/*01234567890123456789012345678901234567890123456789012345678901234567890123456789*/

PC_DispStr(0,0,"uC/OS-II,TheReal-TimeKernel",DISP_FGND_WHITE+DISP_BGND_RED+DISP_BLINK);

PC_DispStr(0,1,"JeanJ.Labrosse",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(02,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,3,"EXAMPLE#1",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,4,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,5,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,6,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,7,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,8,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,9,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,10,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,11,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,12,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,13,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,14,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,15,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,16,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,17,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,18,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,19,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,20,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,21,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,22,"<-PRESS'ESC'TOQUIT->",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY+DISP_BLINK);

/*1111111111222222222233333333334444444444555555555566666666667777777777*/

/*01234567890123456789012345678901234567890123456789012345678901234567890123456789*/

}

/*$PAGE*//*

*********************************************************************************************************

*UPDATETHEDISPLAY

*********************************************************************************************************

*/

/*

staticvoidTaskStartDisp(void)

{

chars[80];

 

//sprintf(s,"%5d",OSTaskCtr);/*Display#tasksrunning*/

//PC_DispStr(18,22,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

//#ifOS_TASK_STAT_EN>0

//sprintf(s,"%3d",OSCPUUsage);/*DisplayCPUusagein%*/

//PC_DispStr(36,22,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

//#endif

//sprintf(s,"%5d",OSCtxSwCtr);/*Display#contextswitchespersecond*/

//PC_DispStr(18,23,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

//sprintf(s,"V%1d.%02d",OSVersion()/100,OSVersion()%100);/*DisplayuC/OS-II'sversionnumber*/

//PC_DispStr(75,24,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

//switch(_8087){/*DisplaywhetherFPUpresent*/

//case0:

//PC_DispStr(71,22,"NOFPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);

//break;

//case1:

//PC_DispStr(71,22,"8087FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);

//break;

//case2:

//PC_DispStr(71,22,"80287FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);

//break;

//case3:

//PC_DispStr(71,22,"80387FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);

//break;

//}

//}

/*$PAGE*//*

*********************************************************************************************************

*CREATETASKS

*********************************************************************************************************

*/

staticvoidTaskStartCreateTasks(void)

{

INT8Uerr;

OSInit();

OSTaskCreate(Task,(void*)0,&Task1[TASK_STK_SIZE-1],1);

OSTaskCreate(Task,(void*)0,&Task2[TASK_STK_SIZE-1],2);

OSTaskCreate(Task,(void*)0,&Task3[TASK_STK_SIZE-1],3);

OSTsakCreate(Task,(void*)0,&Task4[TASK_STK_SIZE-1],4);

}

 

/*

*********************************************************************************************************

*TASKS

*********************************************************************************************************

*/

voidTask(void*pdata)

{

INT8Ux;

INT8Uy;

INT8Uerr;

 

for(;;){

OSSemPend(RandomSem,0,&err);/*Acquiresemaphoretoperformrandomnumbers*/

x=random(80);/*FindXpositionwheretasknumberwillappear*/

y=random(16);/*FindYpositionwheretasknumberwillappear*/

//OSSemPost(RandomSem);/*Releasesemaphore*/

/*Displaythetasknumberonthescreen*/

PC_DispChar(x,y+5,*(char*)pdata,DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,5,"dianqixinxigongchengxueyuancekongjishuyuyiqi",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,6,"09_214",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,7,"maqingying",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,8,"2012-10-22",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

OSTimeDly

(1);/*Delay1clocktick*/

}

}

4、调试过程

1、修改TSET.MAK的地址

2、修改borlandc地址

3、修改TEST的地址

4、找到头文件地址

 

5、运行程序

 

实习心得

短暂的实习生活很快的结束了,短短的五天时间学到了不少东西,现在已经大四了,还有半年时间就要毕业了,所以格外珍惜这次机会。

我已经决定考研了,所以时间比较紧张,但是我仍抽出时间学习嵌入式的一些基本原理。

因为时间都是挤出来的,我不能因为考研而不参加任何实习,毕竟实习的机会已经不多了,学一点是一点。

虽然时间紧迫,但是在同学们的指导下,我还是学到了很多东西。

书上看不懂的知识通过程序的验证,让我一目了然,印象深刻。

刚开始接触的时候,比较不知所措,编译的时候出现了很多错误,让我不知从何做起。

而且整个编译运行的过程比较复杂,总是出现失误,经过反复多次的练习,慢慢的熟悉了整个流程,做起来也比较顺手了,在后期大家的共同努力下,只有一个错误。

大家非常的高兴,因为离成功不远了。

最后在老师的指点下,我们及时的完成了任务,学习和掌握了很多难理解的知识。

时间越紧张,我学的越努力,虽然很疲惫,但苦中有乐。

实习过程中仍有很多知识点不明白。

比如说在总任务下建立的四个小任务,在系统执行的过程中它是否依次返回主函数,然后再顺次执行。

与C语言主函数的功能是否一致?

在考核的最后一天我向老师请教了这个问题,老师给与了非常耐心细致的回答,解决了一直困扰我的小难题,在此表示非常的感谢!

有机会一定要深入学习嵌入式,因为在很多专业书中都出现了相关的内容,可以看出它的价值是多么的重要。

最后,祝老师工作顺利,健康如意!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1