嵌入式测控系统实习报告.docx
《嵌入式测控系统实习报告.docx》由会员分享,可在线阅读,更多相关《嵌入式测控系统实习报告.docx(11页珍藏版)》请在冰豆网上搜索。
![嵌入式测控系统实习报告.docx](https://file1.bdocx.com/fileroot1/2023-1/8/ffb5ff69-f2dd-444f-a656-63bb76d061c2/ffb5ff69-f2dd-444f-a656-63bb76d061c21.gif)
嵌入式测控系统实习报告
嵌入式测控系统实习报告
课题名称:
嵌入式测控系统
学院:
电气信息工程学院
专业:
测控技术与仪器专业
姓名:
王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语言主函数的功能是否一致?
在考核的最后一天我向老师请教了这个问题,老师给与了非常耐心细致的回答,解决了一直困扰我的小难题,在此表示非常的感谢!
有机会一定要深入学习嵌入式,因为在很多专业书中都出现了相关的内容,可以看出它的价值是多么的重要。
最后,祝老师工作顺利,健康如意!