




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、江苏师范大学计 算 机 科 学 与 技 术 学 院实 验 报 告课 程:嵌入式系统及应用 学 号:姓 名:班 级:教 师:计算机科学与技术学院制实验一:实验名称:BC工具的使用方法实验目的:学习和掌握BC工具的使用方法实验(程序调试)过程:进行下述实验前设置环境变量PATH,变量值添加:例题2-1一个简单的问候程序1. 程序代码#include<stdio.h>void main()printf(“Hello,World!n”);2. 编辑程序使用Windows提供的文本文件,待程序编写完毕无误后用8109.c名称将文件存放到事先创建的一个目录中,即11268109中。3. 把程序
2、编译成目标程序进入命令环境并进入程序所在的目录,然后使用如下的命令对源文件8109.c进行编译:bcc -c -ml -Ic:bc31include - Lc:bc31lib 8109.c4. 把目标文件连接成可执行文件命令如下:tlink c:bc31libc0l.obj test.obj,test,test,c:bc31libcl.lib5. 运行8109例题2-2一个具有三个源文件应用程序的编译及连接示例1. pa程序代码/pa.h#ifndef PA_H#define PA_Hvoid A_print();#endif/pa.c#include<stdio.h>#inclu
3、de"pa.h"void A_print() printf("AAAAAAAAn");2. pb程序代码/pb.h#ifndef PB_H#define PB_Hvoid B_print();#endif/pb.c#include<stdio.h>#include"pb.h"void B_print() printf(" BBBBBBBBn");3. 8109.c程序代码/8109.c#include"pa.h"#include"pb.h"void main()
4、for(;) A_print(); B_print(); 4. 编译编译pa.c以形成pa.obj文件,命令为:>bcc - c -ml -Ic:bc31include -I. -Lc:bc31lib pa.c编译pb.c以形成pa.obj文件,命令为:>bcc - c -ml -Ic:bc31include -I. -Lc:bc31lib pb.c编译8109.c以形成8109.obj文件,命令为:>bcc - c -ml -Ic:bc31include -I. -Lc:bc31lib 8109.c5. 连接成可执行文件8109.exe生成8109.exe的命令为>t
5、link c:bc31libc0l.obj pa.obj pb.obj 8109.obj,8109,8109,c:bc31libcl.lib6.运行实验过程中遇到的问题与解决方法:1. 问题:源代码中出现中文字符,程序出错。解决方法:把源代码中的中文字符改为英文字符。2. 输入命令时把英文字母L写成数字1。3. 没有配置环境变量,命令不能执行。分析程序运行结果:Bcc命令编译生成obj文件,tlink命令将obj文件链接生成可执行文件。用bcc分别编译pa.c,pb.c,8109.c生成obj文件,编写tlink文件进行连接,生成可执行文件。运行结果实验二:实验名称:*.MAK的编写方法实验目
6、的:掌握*.MAK文件的编写方法实验(程序调试)过程:例题2-3标号作用的示例1. makefile代码target1: md 11target2: md 22target3: rd 11 rd 222. 运行命令makemake target2make target3例题2-4:为例题2-2设计一个具有4个程序段的makefile,并在该文件中实现源文件的编译以及目标文件的连接,从而生成最终可执行文件。1. makefile代码如下:8109.EXE: TLINK tlink.txtPA.OBJ: Bcc -c -ml -Ic:bc31include -Lc:bc31lib PA.cPB.O
7、BJ: Bcc -c -ml -Ic:bc31include -Lc:bc31lib PB.c8060.OBJ: Bcc -c -ml -Ic:bc31include -Lc:bc31lib 8109.c2. makefile的执行:>make pa.obj>make pb.obj>make 8109.obj>make例题2-5为例题2-2程序编写一个makefile文件,并利用依赖把用以完成工程文件编译及连接工作的各个程序段之间关联起来,从而使用户仅使用一个make命令,便可完成编译及连接任务。1. makefile文件8109.EXE: PA.OBJ PB.OBJ
8、8109.OBJ TLINK tlink.txtPA.OBJ: Bcc -c -ml -Ic:bc31include -Lc:bc31lib PA.cPB.OBJ: Bcc -c -ml -Ic:bc31include -Lc:bc31lib PB.c8109.OBJ: Bcc -c -ml -Ic:bc31include -Lc:bc31lib 8109.c2. makefile的执行过程>make例题2-6使用批处理文件、makefile和连接文件来处理例题2-2源程序的编译和连接。1. 批处理文件由于在前面已经有了makefile和连接文件,所以这里只写批处理文件:ECHO OFF
9、ECHO *ECHO * 批处理文件ECHO *ECHO *ECHO ONc:bc31binmake -f 8109.mak2. 批处理文件的启动:双击该文件即可例题2-7:本例使用了两个来源不同的第三方源程序,一个存放在目录PORTPT,另一个存放在目录PC。用户自己的源文件TEST.c和连接文件TEST.LNK存放在目录SOURCE,批处理文件和makefile文件被存放在目录TEST,同时该目录还要负责存放将来创建出来的最终可执行文件TEST.EXE。本例题无第三方源程序,故无实验结果!实验过程中遇到的问题与解决方法:1. 问题:在做例题2-6时,双击批处理文件,运行失败。解决方法:没有
10、把makefile文件名字改为8060.mak,修改之后就可以正常运行了。分析程序运行结果:2-3创建目录11,创建目录22,删除目录11,、22.2-4(1)2-4(2)2-4(3)2-4(4)2-5(1)2-5(2)2-6实验三:实验名称:调试第三章3-63-10例题实验目的:掌握第三章3-63-10例题的调试方法实验(程序调试)过程:例题3-6设计一个只有一个任务MyTasK的应用程序,当程序运行后,任务MyTasK的工作就是每秒在显示器上显示一个字符“M”。该应用程序的代码如下:#include "includes.h"#define TASK_STK_SIZE 5
11、12/任务堆栈长度OS_STK TaskStartStkTASK_STK_SIZE;/定义任务堆栈区INT16S key;/用于退出uCOS_II的键INT8U x=0,y=0;/字符显示位置void MyTask(void *data);/声明一个任务/*主函数*/void main (void) char* s="M"/定义要显示的字符 OSInit();/初始化uCOS_II PC_DOSSaveReturn();/保存Dos环境 PC_VectSet(uCOS, OSCtxSw);/安装uCOS_II中断 OSTaskCreate(MyTask,/创建任务MyTas
12、ks,/给任务传递参数&TaskStartStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针0);/使任务MyTask的优先级别为0 OSStart();/启动uCOS_II的多任务管理void MyTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR);/安装uCOS_II时钟中断向量 PC_SetTickRate(OS_TICKS_PER_SEC);/设置uCO
13、S_II时钟频率 OS_EXIT_CRITICAL(); OSStatInit();/初始化uCOS_II的统计任务 for (;) if (x>10) x=0; y+=2; PC_DispChar(x, y,/在x,y位置显示s中的字符*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; /如果按下Esc键则退出uCOS_IIif (PC_GetKey(&key) = TRUE) if (key = 0x1B) PC_DOSReturn(); OSTimeDlyHMSM(0, 0, 1, 0);/等待 例题3-7在3
14、-6应用程序的任务MyTasK中再创建一个任务YouTasK,当程序运行后,任务MyTasK的工作在显示器上显示一个字符“M”;而任务YouTasK则是在显示器上显示字符“Y”。应用程序的源代码如下:/*Test*/#include "includes.h"#define TASK_STK_SIZE 512/任务堆栈长度OS_STK MyTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_STK YouTaskStkTASK_STK_SIZE;/定义任务堆栈区INT16S key;/用于退出uCOS_II的键INT8U x=0,y=0;/字符显示位置void M
15、yTask(void *data);/声明任务void YouTask(void *data);/声明任务/*主函数*/void main (void) char* s_M="M"/定义要显示的字符 OSInit( );/初始化uCOS_II PC_DOSSaveReturn( );/保存Dos环境 PC_VectSet(uCOS, OSCtxSw);/安装uCOS_II中断 OSTaskCreate(MyTask,/创建任务MyTasks_M,/给任务传递参数&MyTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针0/任务的优先级别为0);
16、OSStart( );/启动多任务管理/*任务MyTask*/void MyTask (void *pdata) char* s_Y="Y"/定义要显示的字符#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; OS_ENTER_CRITICAL( ); PC_VectSet(0x08, OSTickISR);/安装时钟中断向量 PC_SetTickRate(OS_TICKS_PER_SEC);/设置时钟频率 OS_EXIT_CRITICAL( ); OSStatInit( );/初始化统计任务
17、OSTaskCreate(YouTask,/创建任务MyTasks_Y,/给任务传递参数&YouTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针2/ MyTask的优先级别为2); for (;) if (x>50) x=0; y+=2; PC_DispChar(x, y,/字符的显示位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; /如果按下Esc键则退出uCOS_IIif (PC_GetKey(&key) = TRUE) if (key = 0x1B) PC_DOSRetur
18、n( );/恢复Dos环境 OSTimeDlyHMSM(0, 0, 3, 0);/等待3秒/*任务YouTask*/void YouTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; for (;) if (x>50) x=0; y+=2; PC_DispChar(x, y,/字符的显示位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; OSTimeDlyHMSM(0, 0, 1, 0);/等待1秒 /*E
19、nd*/例题3-8修改例题3-7应用程序的任务YouTasK。要求任务YouTasK运行20次后,挂起任MyTasK务;当任务YouTasK运行40次后,恢复任务MyTasK。应用程序的源代码如下:#include "includes.h"#define TASK_STK_SIZE 512/任务堆栈长度OS_STK MyTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_STK YouTaskStkTASK_STK_SIZE;/定义任务堆栈区INT16S key;/用于退出uCOS_II的键INT8U x=0,y=0;/字符显示位置INT8U time=0;vo
20、id MyTask(void *data);/声明任务void YouTask(void *data);/声明任务/*主函数*/void main (void) char* s_M="M"/定义要显示的字符 OSInit();/初始化uCOS_II PC_DOSSaveReturn();/保存Dos环境 PC_VectSet(uCOS, OSCtxSw);/安装uCOS_II中断 OSTaskCreate(MyTask,/创建任务MyTasks_M,/给任务传递参数&MyTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针0);/使任务MyTas
21、k的优先级别为0 OSStart();/启动uCOS_II的多任务管理/*任务MyTask*/void MyTask (void *pdata) char* s_Y="Y"/定义要显示的字符#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR);/安装uCOS_II时钟中断向量 PC_SetTickRate(OS_TICKS_PER_SEC);/设置uCOS_II时钟频率 OS_EXIT_CRITICA
22、L(); OSStatInit();/初始化uCOS_II的统计任务 OSTaskCreate(YouTask,/创建任务MyTasks_Y,/给任务传递参数&YouTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针2);/使任务MyTask的优先级别为0 for (;) if (x>50) x=0; y+=2; PC_DispChar(x, y,/显示字符的位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; /如果按下Esc键则退出uCOS_IIif (PC_GetKey(&key
23、) = TRUE) if (key = 0x1B) PC_DOSReturn(); OSTimeDlyHMSM(0, 0, 3, 0);/等待 /*任务YouTask*/void YouTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; for (;) if(time=20) OSTaskSuspend(0); if(time=40) OSTaskResume(0); time+=1; if (x>50) x=0; y+=2; PC_DispChar(x, y,/显示字符的
24、位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; OSTimeDlyHMSM(0, 0, 1, 0);/等待 /*End*/例题3-9改造例题3-7的任务MyTasK,当任务MyTasK运行10次时用函数OSSchedLock()对调度器进行加锁,而当任务MyTasK运行到第80次时再用函数OSSchedUnlock()对调度器进行解锁,并运行该程序。应用程序的代码如下:#include "includes.h"#define TASK_STK_SIZE 512/任务堆栈长度OS_STK MyTaskSt
25、kTASK_STK_SIZE;/定义任务堆栈区OS_STK YouTaskStkTASK_STK_SIZE;/定义任务堆栈区INT16S key;/用于退出uCOS_II的键INT8U x=0,y=0;/字符显示位置INT8U times=0;/运行次数void MyTask(void *data);/声明任务void YouTask(void *data);/声明任务/*主函数*/void main (void) char* s_M="M"/定义要显示的字符 OSInit();/初始化uCOS_II PC_DOSSaveReturn();/保存Dos环境 PC_VectS
26、et(uCOS, OSCtxSw);/安装uCOS_II中断 OSTaskCreate(MyTask,/创建任务MyTasks_M,/给任务传递参数&MyTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针0);/使任务MyTask的优先级别为0 OSStart();/启动uCOS_II的多任务管理/*任务MyTask*/void MyTask (void *pdata) char* s_Y="Y"/定义要显示的字符#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata;
27、OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR);/安装uCOS_II时钟中断向量 PC_SetTickRate(OS_TICKS_PER_SEC);/设置uCOS_II时钟频率 OS_EXIT_CRITICAL(); OSStatInit();/初始化uCOS_II的统计任务 OSTaskCreate(YouTask,/创建任务MyTasks_Y,/给任务传递参数&YouTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针2);/使任务MyTask的优先级别为2 for (;) if (x>50) x=0; y
28、+=2; times+=1;if (times=10)OSSchedLock();/锁调度器if (times=80)OSSchedUnlock();/解锁调度器 PC_DispChar(x, y,/显示字符的位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; /如果按下Esc键则退出uCOS_IIif (PC_GetKey(&key) = TRUE) if (key = 0x1B) PC_DOSReturn(); OSTimeDlyHMSM(0, 0, 3, 0);/等待 /*任务YouTask*/void YouT
29、ask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; for (;) if (x>50) x=0; y+=2; PC_DispChar(x, y,/显示字符的位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; OSTimeDlyHMSM(0, 0, 1, 0);/等待 /*End*/例题3-10 修改例题3-7应用程序,使任务MyTasK能删除任务YouTasK。修改后的代码如下:#include "
30、includes.h"#define TASK_STK_SIZE 512/任务堆栈长度OS_STK MyTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_STK YouTaskStkTASK_STK_SIZE;/定义任务堆栈区INT16S key;/用于退出uCOS_II的键INT8U x=0,y=0;/字符显示位置void MyTask(void *data);/声明任务void YouTask(void *data);/声明任务/*主函数*/void main (void) char* s_M="M"/定义要显示的字符 OSInit();/初始化
31、uCOS_II PC_DOSSaveReturn();/保存Dos环境 PC_VectSet(uCOS, OSCtxSw);/安装uCOS_II中断 OSTaskCreate(MyTask,/创建任务MyTasks_M,/给任务传递参数&MyTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针0);/使任务MyTask的优先级别为0 OSStart();/启动uCOS_II的多任务管理/*任务MyTask*/void MyTask (void *pdata) char* s_Y="Y"/定义要显示的字符 char* s="MyTask:
32、我要求YouTask自己删除自己!"#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR);/安装uCOS_II时钟中断向量 PC_SetTickRate(OS_TICKS_PER_SEC);/设置uCOS_II时钟频率 OS_EXIT_CRITICAL(); OSStatInit();/初始化uCOS_II的统计任务 OSTaskCreate(YouTask,/创建任务MyTasks_Y,/给任务传递参数&am
33、p;YouTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶指针2);/使任务MyTask的优先级别为0 for (;) if (x>30)while( OSTaskDelReq( 2 ) != OS_TASK_NOT_EXIST ) PC_DispStr(10,8,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);OSTimeDly(1);/延时一个时钟节拍 if (x>50) x=0; y+=2; PC_DispChar(x, y,/显示字符的位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE
34、); x += 1; /如果按下Esc键则退出uCOS_IIif (PC_GetKey(&key) = TRUE) if (key = 0x1B) PC_DOSReturn(); OSTimeDlyHMSM(0, 0, 3, 0);/等待 /*任务YouTask*/void YouTask (void *pdata) char *s1="YouTask:我必须要删除我自己了!" char *s2="YouTask:我已经删除我自己了!"#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata
35、 = pdata; for (;) if( OSTaskDelReq(OS_PRIO_SELF ) = OS_TASK_DEL_REQ )PC_DispStr(10,10,s1,DISP_FGND_WHITE+DISP_BGND_BLACK);OSTimeDlyHMSM(0, 0, 15, 0);PC_DispStr(10,12,s2,DISP_FGND_WHITE+DISP_BGND_BLACK);OSTaskDel( OS_PRIO_SELF ); if (x>50) x=0; y+=2; PC_DispChar(x, y,/显示字符的位置*(char*)pdata, DISP_BG
36、ND_BLACK+DISP_FGND_WHITE ); x += 1; OSTimeDlyHMSM(0, 0, 1, 0);/等待 /*End*/实验过程中遇到的问题与解决方法:1. 编写连接文件时出错,程序不能正常运行。解决方法:用记事本打开,并把文件属性设置为所有属性,然后修改即可。分析程序运行结果:3-6无符号8位整数x记录一行中已打印的字符数,y记录打印位置的行数,分别初始化为0。Main函数中经OSInit()初始化uC/OSii,经PC_DOSSaveReturn()保存当前的dos环境,安装任务切换中断向量,用OSTaskCreate()创建MyTask任务,设置优先级为0(最高
37、),随后用OSStart()启动多任务管理器。MyTask任务中,首先进入临界段,安装时钟中断向量,并设置时钟频率,然后退出临界段。for循环中刚开始的if判断当前一行打印字符数是否超过11个(x从0开始计数,每打印一个M,则x+=1),若超过11个,则x复位到0,y+=2,即打印位置向下移2行。PC_DispChar()函数用于打印字符,后景色黑色,前景色白色,位置为x列y行,每打印一个字符,列数加1。若按下ESC,则推出uC/OS,OSTimeDlyHMSM()用于延时,每输出一个字符,等待1秒。3-7无符号8位整数x记录打印字符位置的列数,y记录打印位置的行数,分别初始化为0。Main函
38、数中经OSInit()初始化uC/OSii,经PC_DOSSaveReturn()保存当前的dos环境,安装任务切换中断向量,用OSTaskCreate()创建MyTask任务,设置优先级为0(最高),随后用OSStart()启动多任务管理器。MyTask任务中,首先进入临界段,安装时钟中断向量,并设置时钟频率,然后退出临界段。MyTask中通过OSTaskCreate()创建了YouTask任务,设置优先级为2。for循环中刚开始的if判断当前一行打印字符数是否超过51个(x从0开始计数,每打印一个M,则x+=1),若超过51个,则x复位到0,y+=2,即打印位置向下移2行。PC_DispC
39、har()函数用于打印字符,后景色黑色,前景色白色,位置为x列y行,每打印一个字符“M”,列数加1。若按下ESC,则推出uC/OS,OSTimeDlyHMSM()用于延时,每输出一个字符,等待3秒。在MyTask任务等待期间,YouTask运行,for循环中刚开始的if判断当前一行打印字符数是否超过51个(x从0开始计数,每打印一个Y,则x+=1),若超过51个,则x复位到0,y+=2,即打印位置向下移2行。PC_DispChar()函数用于打印字符,后景色黑色,前景色白色,位置为x列y行,每打印一个字符“Y”,列数加1。若按下ESC,则推出uC/OS,OSTimeDlyHMSM()用于延时,
40、每输出一个字符,等待1秒。由于MyTask运行每次等待3秒,YouTask运行每次等待1秒,所以程序每次打印一个M,然后打印三个Y,循环往复,一行满51个字符则换行。3-8无符号8位整数x记录打印字符位置的列数,y记录打印位置的行数,分别初始化为0。无符号8位整数变量time记录YouTask的运行次数。Main函数中经OSInit()初始化uC/OSii,经PC_DOSSaveReturn()保存当前的dos环境,安装任务切换中断向量,用OSTaskCreate()创建MyTask任务,设置优先级为0(最高),随后用OSStart()启动多任务管理器。MyTask任务中,首先进入临界段,安装
41、时钟中断向量,并设置时钟频率,然后退出临界段。MyTask中通过OSTaskCreate()创建了YouTask任务,设置优先级为2。for循环中刚开始的if判断当前一行打印字符数是否超过51个(x从0开始计数,每打印一个M,则x+=1),若超过51个,则x复位到0,y+=2,即打印位置向下移2行。PC_DispChar()函数用于打印字符,后景色黑色,前景色白色,位置为x列y行,每打印一个字符“M”,列数加1。若按下ESC,则推出uC/OS,OSTimeDlyHMSM()用于延时,每输出一个字符,等待3秒。在MyTask任务等待期间,YouTask运行,for循环中刚开始先判断运行YouTa
42、sk运行次数time是否满20次,若达到20次则通过OSTaskSuspend(0)将优先级为0的任务(即MyTask)挂起。判断time是否满40次,若达到40次,则通过OSTaskResume(0)将已被挂起的MyTask恢复。之后的if判断当前一行打印字符数是否超过51个(x从0开始计数,每打印一个Y,则x+=1),若超过51个,则x复位到0,y+=2,即打印位置向下移2行。PC_DispChar()函数用于打印字符,后景色黑色,前景色白色,位置为x列y行,每打印一个字符“Y”,列数加1。若按下ESC,则推出uC/OS,OSTimeDlyHMSM()用于延时,每输出一个字符,等待1秒。由
43、于MyTask运行每次等待3秒,YouTask运行每次等待1秒,所以程序刚开始时每次打印一个M,然后打印三个Y,循环往复,当YouTask运行满20次,MyTask挂起,此时恰好打印了两个Y,MyTask等待了2秒,之后只有YouTask运行,连续输出20个Y,time达到40次,MyTask被恢复,由于之前MyTask等待了两秒,所以MyTask会继续等待1秒,程序输出一个Y,然后MyTask完成等待,程序继续循环执行,每次输出一个M,三个Y。3-9无符号8位整数x记录打印字符位置的列数,y记录打印位置的行数,分别初始化为0。无符号8位整数变量time记录YouTask的运行次数。Main函
44、数中经OSInit()初始化uC/OSii,经PC_DOSSaveReturn()保存当前的dos环境,安装任务切换中断向量,用OSTaskCreate()创建MyTask任务,设置优先级为0(最高),随后用OSStart()启动多任务管理器。MyTask任务中,首先进入临界段,安装时钟中断向量,并设置时钟频率,然后退出临界段。MyTask中通过OSTaskCreate()创建了YouTask任务,设置优先级为2。for循环中刚开始的if判断当前一行打印字符数是否超过51个(x从0开始计数,每打印一个M,则x+=1),若超过51个,则x复位到0,y+=2,即打印位置向下移2行。For循环每执行一次,time加1。PC_DispChar()函数用于打印字符,后景色黑色,前景色白色,位置为x列y行,每打印一个字符“M”,列数加1。若按下ESC,则推出uC/OS,OSTimeDlyHMSM()用于延时,每输出一个字符,等待3秒。当time=10时,MyTask
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DZ/T 0164-1995实验室用双辊破碎机
- DZ/T 0101.4-1994地质仪器仪表制造时间定额磨床
- DZ 43-1986DDC-2B电子自动补偿仪
- CJ/T 391-2012生活垃圾收集站压缩机
- CJ/T 229-2006城市客车发光二极管显示屏
- CJ/T 207-2005无障碍低地板、低入口城市客车技术要求
- CJ/T 183-2008钢塑复合压力管
- 独特思维2025年网络规划设计师考试的知识拓展及试题及答案
- 多媒体内容规划考题及答案
- 中级社会工作者考试战略指南试题及答案
- 《爆破基础知识》课件
- 十大医药代表成功经验分享
- 四川省成都市锦江区2024届生物七年级第二学期期末综合测试试题含解析
- 化学品安全员工职业安全卫生培训课件
- 智慧电力能源管理服务平台建设方案 智慧电网能源管理服务平台建设方案
- 无创血糖仪行业营销策略方案
- 运用PDCA降低留置尿管相关尿路感染课件
- 麦克利兰素质能力模型
- 数据治理咨询项目投标文件技术方案
- DB51∕2672-2020 成都市锅炉大气污染物排放标准
- 零基预算的应用
评论
0/150
提交评论