嵌入式课程设计_第1页
嵌入式课程设计_第2页
嵌入式课程设计_第3页
嵌入式课程设计_第4页
嵌入式课程设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩 南京工程学院 自动化学院 嵌入式系统课程设计报告课 题:操作系统任务间信号量通信程序设计专 业: 自动化(数控技术) 班 级: 数控卓越131 学 号: 学生姓名: 任课教师: 年 月 日一、课程设计要求 硬件:x86架构PC机软件:X8架构的PC机和Borland C编译器和链接器,C/OS-II操作系统文件要求:1). 撰写详细的程序功能说明; 2). 列出程序中调用的系统函数,并对函数功能加以说明; 3). 完成程序流程图,并对各个功能模块加以详细的阐述; 4). 提供程序的源代码文件,并详细阐述程序的调试过程; 5). 提供可执行文件,并演示执行结果; 6). 对课程设计进行总结

2、,撰写课程设计报告二、程设计题目分析当事件控制块成员OSEventType的值被设置为OS_EVENT_TYPE_SEM时,这个控制块描述的就是一个信号量。在使用信号量之前,应用程序必须调用函数 OSSemCreate()来创建一个信号量。函数 OSSemCreate()的原型如下:OS_EVENT *OSSemCreate(INT16U cnt /信号量计数器初值)任务调用函数OSSemPend()请求信号量。函数OSSemPend()的原型如下:void OSSemPend(OS_EVENT * pevent, /信号量的指针 INT16U timeout, /等待时限 INT8U *er

3、r /错误信息) ; 任务获得信号量,并在访问共享资源后,必须释放信号量。释放信号量也叫做发送信号量,调用函数OSSemPost(),原型如下: INT8U OSSemPost(OS_EVENT *pevent /信号量的指针);因此在程序中调用了相关函数:在MyTask任务中请求信号量在HerTask任务中发送信号量,并建立一个循环让HerTask每运行三次发送一个信号量。关于MyTask调用的函数是这样的:以上就是信号量的部分,为了使程序实现更多的内容,便加入了消息邮箱的设计。定义事件控制块指针:创建消息邮箱;Times作为变量记录MyTask运行次数在YouTask请求消息邮箱三、课程程

4、序设计:所设计的程序,该程序有MyTask、YouTask和HerTask三个任务,在任务MyTask中用一个变量Times记录任务MyTask的运行次数,并用消息邮箱发给YouTask并由YouTask显示,同时MyTask是有HerTask发信号量控制运行。信号量为1这MyTask运行,为0则不运行。程序如下:/*Test*/#include includes.h#define TASK_STK_SIZE 512/任务堆栈长度OS_STK StartTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_STK MyTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_S

5、TK YouTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_STK HerTaskStkTASK_STK_SIZE;/定义任务堆栈区INT16S key;char *s1=MyTask;char *s2=HerTask;/用于退出的键char *s;char *ss;INT8U err; INT8U y=0; /字符显示位置INT8U YouTaskRun=0;INT8U HerTaskRun=0;OS_EVENT *Fun_Semp;INT32U Times=0;OS_EVENT *Str_Box;void Fun(INT8U x,INT8U y);void StartTas

6、k(void *data);/声明起始任务void MyTask(void *data);/声明任务void YouTask(void *data);/声明任务void HerTask(void *data);/声明任务/*主函数*/void main (void) OSInit( );/初始化uCOS_II PC_DOSSaveReturn( );/保存Dos环境 PC_VectSet(uCOS, OSCtxSw);/安装uCOS_II中断 Str_Box = OSMboxCreate(void*)0);/创建消息邮箱 OSTaskCreate(StartTask,/创建任务StartTas

7、k(void*)0,/给任务传递参数&StartTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶0);/使任务的优先级别为0 OSStart( );/启动多任务管理/*任务StartTask*/void StartTask (void *pdata)#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);/设置uCO

8、S_II时钟频率 OS_EXIT_CRITICAL( ); Fun_Semp=OSSemCreate(0); OSStatInit( );/初始化统计任务 OSTaskCreate(MyTask,/创建任务MyTask(void*)0,/给任务传递参数&MyTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶3);/使任务的优先级别为3 OSTaskCreate(YouTask,/创建任务YouTask(void*)0,/给任务传递参数&YouTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶4);/使任务的优先级别为4 OSTaskCreate(HerTas

9、k,/创建任务HerTask(void*)0,/给任务传递参数&HerTaskStkTASK_STK_SIZE - 1,/设置任务堆栈栈顶5);/使任务的优先级别为5 for (;) /如果按下Esc键则退出uCOS_IIif (PC_GetKey(&key) = TRUE) if (key = 0x1B) PC_DOSReturn(); OSTimeDlyHMSM(0, 0, 3, 0);/等待3秒 /*任务MyTask*/void MyTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = p

10、data; for (;) OSSemPend(Fun_Semp,0,&err); /请求信号量 PC_DispStr(0,+y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE ); sprintf(s,%d,Times); OSMboxPost(Str_Box,s);/发送消息 Times+; Fun(7,y); OSTimeDlyHMSM(0, 0, 1, 0);/等待1秒 /*任务YouTask*/void YouTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata =

11、pdata; for (;) if(YouTaskRun=3) ss=OSMboxPend(Str_Box,10,&err); PC_DispStr(20,y, ss, DISP_BGND_BLACK+DISP_FGND_WHITE ); YouTaskRun=0; YouTaskRun+; OSTimeDlyHMSM(0, 0, 1, 0);/等待1秒 /*任务HerTask*/void HerTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; for (;) if(HerTa

12、skRun=3) OSSemPost(Fun_Semp);/发送信号量 HerTaskRun=0; HerTaskRun+; PC_DispStr(0,+y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE ); OSTimeDlyHMSM(0, 0, 1, 0);/等待1秒 ; /*Fun()*/void Fun(INT8U x,INT8U y) PC_DispStr(x,y, invoked Fun()!,DISP_BGND_BLACK+DISP_FGND_WHITE );/*End*/四、程序编译结果:因为MyTask需要HerTask发信号量才能运行,所以即使MyTask优先级高也不能运行。而YouTask

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论