打印

关于ucosii的一个小问题

[复制链接]
621|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuhui76683|  楼主 | 2017-1-18 14:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/************************Test*************************************/
#include "includes.h"
#pragma comment(lib, "winmm.lib")
#define  TASK_STK_SIZE   512                                //任务堆栈长度
#define  N_MESSAGES      128                                //定义消息队列长度
OS_STK   StartTaskStk[TASK_STK_SIZE];                        //定义任务堆栈区
OS_STK   MyTaskStk[TASK_STK_SIZE];                        //定义任务堆栈区
OS_STK   YouTaskStk[TASK_STK_SIZE];                        //定义任务堆栈区

char*ss;
char*s100;
char*s;
char*s500;
void *MsgGrp[N_MESSAGES];                                //定义消息指针数组
INT8U err;                                                                                 
OS_EVENT *Str_Q;                                        //定义事件控制块
void  StartTask(void *data);                                //声明起始任务
void  MyTask(void *data);                                //声明任务
void  YouTask(void *data);                                //声明任务

/************************主函数*********************************/
void  main (void)
{
    OSInit( );                                                //初始化uCOS_II
        Str_Q = OSQCreate (&MsgGrp[0],N_MESSAGES);                //创建消息队列
    OSTaskCreate(StartTask,                                //创建任务StartTask
        (void*)0,                                        //给任务传递参数
        &StartTaskStk[TASK_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( );
    OS_EXIT_CRITICAL( );

    OSStatInit( );                                //初始化统计任务
    OSTaskCreate(MyTask,                        //创建任务MyTask
                (void*)0,                        //给任务传递参数
                &MyTaskStk[TASK_STK_SIZE - 1],        //设置任务堆栈栈顶
                3);                                //使任务的优先级别为3
    OSTaskCreate(YouTask,                        //创建任务YouTask
                (void*)0,                        //给任务传递参数
                &YouTaskStk[TASK_STK_SIZE - 1],        //设置任务堆栈栈顶
                4);                                //使任务的优先级别为4
    s="这个串能收到几次?";
    OSQPostFront(Str_Q,s);                        //发送消息

    for (;;)
    {
        if(OSTimeGet()>100 && OSTimeGet()<500)
        {
                s100="现在OSTime的值在100到500之间";
                OSQPostFront(Str_Q,s100);        //发送消息
                s="这个串是哪个任务收到的?";
                OSQPostFront(Str_Q,s);                //发送消息
       
        }
        if(OSTimeGet()>5000 && OSTimeGet()<5500)
        {
                s500="现在OSTime的值在5000到5500之间";
                OSQPostFront(Str_Q,s500);        //发送消息
        }

}
/************************任务MyTask*******************************/
void  MyTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    pdata = pdata;

    for (;;)
    {
        ss=OSQPend(Str_Q,0,&err);          //请求消息队列                                         
    OS_Printf(ss);
      OSTimeDlyHMSM(0, 0, 1, 0);        //等待1秒
    }
}
/************************任务YouTask******************************/
void  YouTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    pdata = pdata;     

    for (;;)
    {
                ss=OSQPend(Str_Q,0,&err);         //请求消息队列                                          
                OS_Printf(ss);                        
                OSTimeDlyHMSM(0, 0, 1, 0);                //等待1秒
    }
}

/************************End**************************************/
这是一个简单的消息队列的实验   在VS2010上做的
问题:在MyTask那个子程序处,出现了  1>d:\vs2010\ucos-ii+vs2012_完美仿真\main.c(72): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)    这样的问题    有谁可以帮忙解惑吗?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝