云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 实时操作系统实验报告

实时操作系统实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/13 17:39:26

OSSemPend(Fun_Semp,0,&err);

PC_DispStr(0,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE); */ } }

void Task2 (void *pdata) {

pdata = pdata;

OSTimeDly(OS_TICKS_PER_SEC*5); for (;;) {

PC_DispStr(0,++y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE); OSSemPost(Fun_Semp); */ } }

OSTimeDly(OS_TICKS_PER_SEC); /* Delay for 100 mS

OSTimeDly(OS_TICKS_PER_SEC*2); /* Delay for 100 mS

实验截图:

实验感想:

通过本次实验,我深刻理解了信号量的作用,特别是互斥操作和同步操作; 掌握了利用信号量操作函数实现简单的生产者/消费者问题;

掌握下列信号量操作函数及其使用方法:OSSemCreate、OSSemPend、OSSemPost ;

这次实验的信号量的声明、函数的声明以及定义过程中我发现我对以往学习的C语言知识基础并不牢固,简单的声明和定义都会引发一系列的错误,在今后的学习中药注意完善、巩固所学的知识。

实验四 消息编程实验

实验目的:

? 掌握消息编程方法,主要函数包括:

? OSQCreate 创建消息队列 ? OSQPend 接收消息

? OSQPostFront,OSQPost 发送消息

实验要求与思路:

建议一个能存放6条消息的消息队列,在此基础上创建Task1和Task3,向该消息队列发送消息,而创建任务Task2,从消息队列中获取消息。考虑消息队列满和空的情况。(设Task1使用OSQPost,Task3使用OSQPostFront)

实验程序:

#include \#define TASK_STK_SIZE 512 #define N_MESSAGES 10 #define TASK_START_PRIO 2 #define TASK_1_PRIO #define TASK_2_PRIO #define TASK_3_PRIO INT8U err; INT8U y=0; INT32U Times=0; OS_EVENT * Str_Q; OS_STK OS_STK OS_STK OS_STK

TaskStartStk[TASK_STK_SIZE]; Task1Stk[TASK_STK_SIZE]; Task2Stk[TASK_STK_SIZE]; Task3Stk[TASK_STK_SIZE];

4 5 6

void * MsgGrp[N_MESSAGES];

void TaskStart(void *pdata); void Task1(void *pdata); void Task2(void *pdata); void Task3(void *pdata); void TaskStartDispInit (void); void main(void) { }

OSInit();

PC_DOSSaveReturn(); PC_VectSet(uCOS,OSCtxSw);

Str_Q=OSQCreate(&MsgGrp[0],N_MESSAGES);

OSTaskCreate(TaskStart,0,&TaskStartStk[TASK_STK_SIZE-1],TASK_START_PRIO); OSStart();

void TaskStart(void *pdata) { }

void TaskStartDispInit (void) {

/*

1111111111222222222233333333334444444444555555555566666666667777777777 */ /*

01234567890123456789012345678901234567890123456789012345678901234567890123456789 */ \\ PC_DispStr(

0,

2,

\\ PC_DispStr( PC_DispStr( PC_DispStr(

0, 0, 0,

4, 5, 6,

\\\

INT16S key=0; INT8U err; pdata=pdata;

TaskStartDispInit(); OS_ENTER_CRITICAL(); PC_VectSet(0x08,OSTickISR);

PC_SetTickRate(OS_TICKS_PER_SEC); OS_EXIT_CRITICAL(); OSStatInit();

err=OSTaskCreate(Task1,0,&Task1Stk[TASK_STK_SIZE-1],TASK_1_PRIO); err=OSTaskCreate(Task2,0,&Task2Stk[TASK_STK_SIZE-1],TASK_2_PRIO); err=OSTaskCreate(Task3,0,&Task3Stk[TASK_STK_SIZE-1],TASK_3_PRIO); for(;;){ }

if(PC_GetKey(&key)){ }

OSCtxSwCtr=0;

OSTimeDly(OS_TICKS_PER_SEC);

if(key==0x1B){ }

PC_DOSReturn();

PC_DispStr( 0, 0, \ uC/OS-II, The Real-Time Kernel

PC_DispStr( 0, 1, \ Jean J. Labrosse

\

PC_DispStr( 0, 3, \ EXAMPLE #2

\

\

\

搜索更多关于: 实时操作系统实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

OSSemPend(Fun_Semp,0,&err); PC_DispStr(0,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE); */ } } void Task2 (void *pdata) { pdata = pdata; OSTimeDly(OS_TICKS_PER_SEC*5); for (;;) { PC_DispStr(0,++y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE); OSSemPost(Fun_Semp); */ } } OSTimeDly(OS_TICKS_PER_SEC);

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com