嵌入式测控系统实习报告Word下载.docx
《嵌入式测控系统实习报告Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式测控系统实习报告Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
stdio.h>
string.h>
ctype.h>
stdlib.h>
conio.h>
dos.h>
setjmp.h>
#include"
E:
\ucos-ii\software\ucos-ii\ix86l\bc45\os_cpu.h"
\ucos-ii\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE\os_cfg.h"
\ucos-ii\software\ucos-ii\source\ucos_ii.h"
\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);
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*/
//}
*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,"
"
PC_DispStr(0,3,"
EXAMPLE#1"
PC_DispStr(0,4,"
PC_DispStr(0,5,"
PC_DispStr(0,6,"
PC_DispStr(0,7,"
PC_DispStr(0,8,"
PC_DispStr(0,9,"
PC_DispStr(0,10,"
PC_DispStr(0,11,"
PC_DispStr(0,12,"
PC_DispStr(0,13,"
PC_DispStr(0,14,"
PC_DispStr(0,15,"
PC_DispStr(0,16,"
PC_DispStr(0,17,"
PC_DispStr(0,18,"
PC_DispStr(0,19,"
PC_DispStr(0,20,"
PC_DispStr(0,21,"
PC_DispStr(0,22,"
<
-PRESS'
ESC'
TOQUIT->
DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY+DISP_BLINK);
/*$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
%3d"
OSCPUUsage);
/*DisplayCPUusagein%*/
//PC_DispStr(36,22,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);
OSCtxSwCtr);
/*Display#contextswitchespersecond*/
//PC_DispStr(18,23,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);
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:
8087FPU"
//case2:
//PC_DispStr(71,22,"
80287FPU"
//case3:
80387FPU"
//}
*CREATETASKS
staticvoidTaskStartCreateTasks(void)
INT8Uerr;
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;
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"
PC_DispStr(0,6,"
09_214"
PC_DispStr(0,7,"
maqingying"
PC_DispStr(0,8,"
2012-10-22"
OSTimeDly
(1);
/*Delay1clocktick*/
4、调试过程
1、修改TSET.MAK的地址
2、修改borlandc地址
3、修改TEST的地址
4、找到头文件地址
5、运行程序
实习心得
短暂的实习生活很快的结束了,短短的五天时间学到了不少东西,现在已经大四了,还有半年时间就要毕业了,所以格外珍惜这次机会。
我已经决定考研了,所以时间比较紧张,但是我仍抽出时间学习嵌入式的一些基本原理。
因为时间都是挤出来的,我不能因为考研而不参加任何实习,毕竟实习的机会已经不多了,学一点是一点。
虽然时间紧迫,但是在同学们的指导下,我还是学到了很多东西。
书上看不懂的知识通过程序的验证,让我一目了然,印象深刻。
刚开始接触的时候,比较不知所措,编译的时候出现了很多错误,让我不知从何做起。
而且整个编译运行的过程比较复杂,总是出现失误,经过反复多次的练习,慢慢的熟悉了整个流程,做起来也比较顺手了,在后期大家的共同努力下,只有一个错误。
大家非常的高兴,因为离成功不远了。
最后在老师的指点下,我们及时的完成了任务,学习和掌握了很多难理解的知识。
时间越紧张,我学的越努力,虽然很疲惫,但苦中有乐。
实习过程中仍有很多知识点不明白。
比如说在总任务下建立的四个小任务,在系统执行的过程中它是否依次返回主函数,然后再顺次执行。
与C语言主函数的功能是否一致?
在考核的最后一天我向老师请教了这个问题,老师给与了非常耐心细致的回答,解决了一直困扰我的小难题,在此表示非常的感谢!
有机会一定要深入学习嵌入式,因为在很多专业书中都出现了相关的内容,可以看出它的价值是多么的重要。
最后,祝老师工作顺利,健康如意!