level 1
廖梓柔吖
楼主
LZR shiyan4
/************************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];
INT16S key;
char*s;
char*ss;
char*sss="M";
INT8U err;
INT8U y=0;
INT32U Times=0;
OS_EVENT *Str_Box;
void StartTask(void *data);
void MyTask(void *data);
void YouTask(void *data);
/************************主函数*********************************/
void main (void)
{
OSInit( );
PC_DOSSaveReturn( );
PC_VectSet(uCOS, OSCtxSw);
Str_Box = OSMboxCreate ((void*)0);
OSTaskCreate(StartTask,
(void*)0,
&StartTaskStk[TASK_STK_SIZE - 1],
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);
OS_EXIT_CRITICAL( );
OSStatInit( );
OSTaskCreate(MyTask,
(void*)0,
&MyTaskStk[TASK_STK_SIZE - 1],
3);
OSTaskCreate(YouTask,
(void*)0,
&YouTaskStk[TASK_STK_SIZE - 1],
4);
for (;;)
{
if (PC_GetKey(&key) == TRUE)
{
if (key == 0x1B)
{
PC_DOSReturn();
}
}
OSTimeDlyHMSM(0, 0, 3, 0);
}
}
/************************任务MyTask*******************************/
void MyTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{
sprintf(s,"%d" ,Times);
OSMboxPost(Str_Box,s);
Times++;
OSTimeDlyHMSM(0, 0, 1, 0);
}
}
/************************任务YouTask******************************/
void YouTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{ ss=OSMboxPend(Str_Box,10,&err);
PC_DispStr(10,++y,
sss,
DISP_BGND_BLUE+DISP_FGND_CYAN );
OSTimeDlyHMSM(0, 0,*ss ,0);
}
}
/************************End**************************************/
1 建立两个用户任务,任务1以由任务2传递过来的时间参数作为时间间隔向电脑屏
幕发送字母“M”。通过消息邮箱实现两任务间的数据通信。我修改的这个程序运行不出来,求解
2016年06月02日 09点06分
1
/************************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];
INT16S key;
char*s;
char*ss;
char*sss="M";
INT8U err;
INT8U y=0;
INT32U Times=0;
OS_EVENT *Str_Box;
void StartTask(void *data);
void MyTask(void *data);
void YouTask(void *data);
/************************主函数*********************************/
void main (void)
{
OSInit( );
PC_DOSSaveReturn( );
PC_VectSet(uCOS, OSCtxSw);
Str_Box = OSMboxCreate ((void*)0);
OSTaskCreate(StartTask,
(void*)0,
&StartTaskStk[TASK_STK_SIZE - 1],
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);
OS_EXIT_CRITICAL( );
OSStatInit( );
OSTaskCreate(MyTask,
(void*)0,
&MyTaskStk[TASK_STK_SIZE - 1],
3);
OSTaskCreate(YouTask,
(void*)0,
&YouTaskStk[TASK_STK_SIZE - 1],
4);
for (;;)
{
if (PC_GetKey(&key) == TRUE)
{
if (key == 0x1B)
{
PC_DOSReturn();
}
}
OSTimeDlyHMSM(0, 0, 3, 0);
}
}
/************************任务MyTask*******************************/
void MyTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{
sprintf(s,"%d" ,Times);
OSMboxPost(Str_Box,s);
Times++;
OSTimeDlyHMSM(0, 0, 1, 0);
}
}
/************************任务YouTask******************************/
void YouTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{ ss=OSMboxPend(Str_Box,10,&err);
PC_DispStr(10,++y,
sss,
DISP_BGND_BLUE+DISP_FGND_CYAN );
OSTimeDlyHMSM(0, 0,*ss ,0);
}
}
/************************End**************************************/
1 建立两个用户任务,任务1以由任务2传递过来的时间参数作为时间间隔向电脑屏
幕发送字母“M”。通过消息邮箱实现两任务间的数据通信。我修改的这个程序运行不出来,求解