4265|3

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

自学UcosII 遇到了问题 [复制链接]

 自己编了段代码,在虚拟机上运行是报 file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\1017393138\QQ\WinTemp\RichOle\~]CM)K$B`~JQU]R_0D09)IU.pngfile:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\1017393138\QQ\WinTemp\RichOle\~]CM)K$B`~JQU]R_0D09)IU.png 错误以下是相关代码,求大神指教,谢谢


/******************************Test*******************************/
#include "includes.h"
#define  TASK_STK_SIZE   512                                //任务堆栈长度
OS_STK   MyTaskStk[TASK_STK_SIZE];                //定义任务堆栈区
OS_STK   YouTaskStk[TASK_STK_SIZE];                //定义任务堆栈区
OS_STK   HerTaskStk[TASK_STK_SIZE];
INT16S   key;                                                                //用于退出uCOS_II的键
INT8U         x=0,y=0;                                                        //字符显示位置
void  MyTask(void *data);                                                //声明任务
void  YouTask(void *data);                                                //声明任务
void  HerTask(void *data);
/************************主函数*********************************/
void  main (void)
{
    char* s_M="M";                                                        //定义要显示的字符
    OSInit( );                                                                        //初始化uCOS_II
    PC_DOSSaveReturn( );                                                //保存Dos环境
    PC_VectSet(uCOS, OSCtxSw);                                //安装uCOS_II中断
    OSTaskCreate(
MyTask,                                                                //创建任务MyTask
                s_M,                                                                //给任务传递参数
                &MyTaskStk[TASK_STK_SIZE - 1],                //设置任务堆栈栈顶指针
                0                                                                        //任务的优先级别为0
);                               
    OSStart( );                                                                //启动多任务管理
}

/*******************任务MyTask**********************************/

void  MyTask (void *pdata)
{
    char* s_Y="Y";                                                        //定义要显示的字符
        char* s_H="H";
#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(
YouTask,                                                                //创建任务MyTask
                        s_Y,                                                                        //给任务传递参数
                        &YouTaskStk[TASK_STK_SIZE - 1],        //设置任务堆栈栈顶指针
                        2                                                                // MyTask的优先级别为2                       
);               
OSTaskCreate(
HerTask,                                                                //创建任务HerTask
                        s_H,                                                                        //给任务传递参数
                        &YouTaskStk[TASK_STK_SIZE - 1],        //设置任务堆栈栈顶指针
                        4                                                                // HerTask的优先级别为4               
);                                               
    for (;;)
    {
        if (x>50)
                {
                           x=0;
                           y+=2;
        }                                                
        PC_DispChar(x, y,                                        //字符的显示位置
                *(char*)pdata,
                DISP_BGND_BLACK+DISP_FGND_WHITE );
                       x += 1;   
                //如果按下Esc键则退出uCOS_II
                if (PC_GetKey(&key) == TRUE)
                {
                if (key == 0x1B)
                    {
                    PC_DOSReturn( );                                //恢复Dos环境
                }
            }
            OSTimeDlyHMSM(0, 0, 3, 0);                        //等待3秒
}
}

/************************任务YouTask******************************/

void  YouTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    pdata = pdata;
    for (;;)
    {
        if (x>50)
                        {
                                   x=0;
                                   y+=2;
        }                                                
        PC_DispChar(
x, y,                                        //字符的显示位置
                                        *(char*)pdata,
                                        DISP_BGND_BLACK+DISP_FGND_WHITE
);
                       x += 1;       
        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 (x>50)
                        {
                                   x=0;
                                   y+=2;
        }                                                
        PC_DispChar(
x, y,                                        //字符的显示位置
                                        *(char*)pdata,
                                        DISP_BGND_BLACK+DISP_FGND_WHITE
);
                       x += 1;       
        OSTimeDlyHMSM(0, 0, 2, 0);                //等待1秒
    }
}



最新回复

怎么解决的,我也遇到了  详情 回复 发表于 2016-3-1 21:38
点赞 关注
 

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
解决了!
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
怎么解决的,我也遇到了
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

4
 
我的是语法错误,检查一遍看出来了,你也许可以检查一下
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表