文档详情

嵌入式课程设计.docx

发布:2021-10-03约5.58千字共9页下载文档
文本预览下载声明
成绩 成绩 南京工程学院 自动化学院 嵌入式系统课程设计报告 课 题:操作系统任务间信号量通信程序设计 专 业: 自动化(数控技术) 班 级: 数控卓越131 学 号: 学生姓名: 任课教师: 年 月 日 一、课程设计要求 硬件:x86架构PC机 软件:X8架构的PC机和Borland C编译器和链接器,μC/OS-II操作系统文件 要求:1). 撰写详细的程序功能说明; 2). 列出程序中调用的系统函数,并对函数功能加以说明; 3). 完成程序流程图,并对各个功能模块加以详细的阐述; 4). 提供程序的源代码文件,并详细阐述程序的调试过程; 5). 提供可执行文件,并演示执行结果; 6). 对课程设计进行总结,撰写课程设计报告 二、程设计题目分析 当事件控制块成员OSEventType的值被设置为OS_EVENT_TYPE_SEM时,这个控制块描述的就是一个信号量。在使用信号量之前,应用程序必须调用函数 OSSemCreate()来创建一个信号量。函数 OSSemCreate()的原型如下: OS_EVENT *OSSemCreate( INT16U cnt //信号量计数器初值 ) 任务调用函数OSSemPend()请求信号量。函数OSSemPend()的原型如下: void OSSemPend(OS_EVENT * pevent, //信号量的指针 INT16U timeout, //等待时限 INT8U *err //错误信息 ) ; 任务获得信号量,并在访问共享资源后,必须释放信号量。释放信号量也叫做发送信号量,调用函数OSSemPost(),原型如下: INT8U OSSemPost( OS_EVENT *pevent //信号量的指针 ); 因此在程序中调用了相关函数: 在MyTask任务中请求信号量 在HerTask任务中发送信号量,并建立一个循环让HerTask每运行三次发送一个信号量。 关于MyTask调用的函数是这样的: 以上就是信号量的部分,为了使程序实现更多的内容,便加入了消息邮箱的设计。 定义事件控制块指针: 创建消息邮箱; Times作为变量记录MyTask运行次数 在YouTask请求消息邮箱 三、课程程序设计: 所设计的程序,该程序有MyTask、YouTask和HerTask三个任务,在任务MyTask中用一个变量Times记录任务MyTask的运行次数,并用消息邮箱发给YouTask并由YouTask显示,同时MyTask是有HerTask发信号量控制运行。信号量为1这MyTask运行,为0则不运行。 程序如下: /************************Test*************************************/ #include includes.h #define TASK_STK_SIZE 512 //任务堆栈长度 OS_STK StartTaskStk[TASK_STK_SIZE]; //定义任务堆栈区 OS_STK MyTaskStk[TASK_STK_SIZE]; //定义任务堆栈区 OS_STK YouTaskStk[TASK_STK_SIZE]; //定义任务堆栈区 OS_STK HerTaskStk[TASK_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 StartTask(void *data); //声明起始任务 void MyTask(void *data);
显示全部
相似文档