OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12126|回复: 16

求助:任哲老师书上ucos ii的一个问题

[复制链接]

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-22
在线时间
21 小时
发表于 2013-6-17 20:31:58 | 显示全部楼层 |阅读模式
        正在学习任哲老师的书,做实验的时候遇到了两个问题(可能编辑的不太好,程序有些长,不好意思):
        1)这是其中一个任务,请问当我调用下面那个延时3s的程序的时候,那个检测当前按键是不是esc的程序还在执行吗?
void  MyTask (void *pdata)
{

//如果按下Esc键则退出uCOS_II
if (PC_GetKey(&key) == TRUE) 
{
            if (key == 0x1B) 
   {
                PC_DOSReturn();
            }
                 }
        OSTimeDlyHMSM(0, 0, 3, 0); //等待
}
            2)下面是完整的程序和实验的结果但是为什么这一堆m是一起出来的?怎么没有3s延时了?


#include "includes.h"

#define  TASK_STK_SIZE   512 //任务堆栈长度

OS_STK   MyTaskStk[TASK_STK_SIZE]; //定义任务堆栈区
OS_STK YouTaskStk[TASK_STK_SIZE];

INT16S   key; //用于退出uCOS_II的键
INT8U x=0,y=0; //字符显示位置
INT8U    times;

void  MyTask(void *data); //声明一个任务
void  YouTask(void *data);


/************************主函数*********************************************/

void  main (void)
{
    char* s="M"; //定义要显示的字符

    OSInit(); //初始化uCOS_II

    PC_DOSSaveReturn(); //保存Dos环境
    PC_VectSet(uCOS, OSCtxSw); //安装uCOS_II中断

    OSTaskCreate(MyTask, //创建任务MyTask
s, //给任务传递参数
&MyTaskStk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶指针
0); //使任务MyTask的优先级别为0
    OSStart(); //启动uCOS_II的多任务管理
}


void  MyTask (void *pdata)
{
char* m = "Y" ;

#if OS_CRITICAL_METHOD == 3
OS_CPU_SR  cpu_sr;
#endif

    pdata = pdata; 

    OS_ENTER_CRITICAL();
    PC_VectSet(0x08, OSTickISR); //安装uCOS_II时钟中断向量
    PC_SetTickRate(OS_TICKS_PER_SEC); //设置uCOS_II时钟频率
    OS_EXIT_CRITICAL();

    OSStatInit(); //初始化uCOS_II的统计任务

OSTaskCreate(YouTask, //创建任务YouTask
m, //给任务传递参数
&YouTaskStk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶指针
2);

    for (;;) 
{    
if (times == 10)
{
OSSchedLock();
}

if (times == 80)
{
OSSchedUnlock();
}

times += 1 ;

        if (x>10) 
{
  x=0;
  y+=2; 
}
                                                 
        PC_DispChar(x, y, //在x,y位置显示s中的字符
*(char*)pdata, 
DISP_BGND_BLUE+DISP_FGND_WHITE );
        x += 1;                         

//如果按下Esc键则退出uCOS_II
if (PC_GetKey(&key) == TRUE) 
{
            if (key == 0x1B) 
   {
                PC_DOSReturn();
            }
        }

        OSTimeDlyHMSM(0, 0, 3, 0); //等待
    }
}

void  YouTask(void *pdata)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    pdata = pdata; 
    
    for (;;) 
{        
        if (x>10) 
{
x=0;
y+=2; 
}
        PC_DispChar(x, y, //在x,y位置显示s中的字符
*(char*)pdata,
DISP_BGND_BLUE+DISP_FGND_WHITE );
x += 1;                         
//如果按下Esc键则退出uCOS_II
if (PC_GetKey(&key) == TRUE) 
{
            if (key == 0x1B) 
{
                PC_DOSReturn();
            }
        }
        OSTimeDlyHMSM(0, 0, 1, 0); //等待
    }
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2013-6-17 20:58:03 | 显示全部楼层
PC机 的仿真,没搞过.帮顶下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-22
在线时间
21 小时
 楼主| 发表于 2013-6-18 20:46:40 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢拉
回复 支持 反对

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-5-17
在线时间
2 小时
发表于 2013-7-30 14:08:43 | 显示全部楼层
请教下楼主,PC机仿真怎么搞的,尝试了下,没搞会
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-22
在线时间
21 小时
 楼主| 发表于 2013-8-8 18:49:00 | 显示全部楼层
回复【4楼】雪鹰:
---------------------------------
额,给我个你的QQ吧
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-22
在线时间
21 小时
 楼主| 发表于 2013-8-8 19:00:39 | 显示全部楼层
回复【4楼】雪鹰:
---------------------------------
还是直接用网盘给你吧,我自己写的看看你能看懂吗,对了我是用的xp的虚拟机,所有文件都放在c盘的。http://pan.baidu.com/share/link?shareid=2390686565&uk=3440761638
回复 支持 反对

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2013-8-8 20:53:04 | 显示全部楼层
官方是有VC版本的范例;至于这儿的代码,我看不懂。
于20150522停用该账号:http://www.microstar.club
回复 支持 反对

使用道具 举报

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
发表于 2013-8-8 21:07:31 | 显示全部楼层
当调用延时3秒函数时,MyTask 任务就会进入等待状态。。。CPU的控制权交给就绪表中的最高优先级的任务,等三秒到了后,MyTask 任务就会从从等待状态返回到就绪状态中。你别只看任哲的书。。。虽然易懂易上手。。。但是还是不知其索然,你应该看看内核代码。。。
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-22
在线时间
21 小时
 楼主| 发表于 2013-8-8 21:52:59 | 显示全部楼层
回复【8楼】ximilenfu:
---------------------------------
是直接看代码吗?能推荐本书吗?谢谢
回复 支持 反对

使用道具 举报

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
发表于 2013-8-9 00:41:12 | 显示全部楼层
反正我是看邵贝贝的书+下载内核代码分析的
回复 支持 反对

使用道具 举报

32

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2012-9-12
在线时间
18 小时
发表于 2013-9-27 22:48:11 | 显示全部楼层
回复【楼主位】zhubeilife:
        正在学习任哲老师的书,做实验的时候遇到了两个问题(可能编辑的不太好,程序有些长,不好意思):        1)这是其中一个任务,请问当我调用下面那个延时3s的程序的时候,那个检测当前按键是不是esc的程序还在执行吗?void  MyTask (void *pdata)
{ //如果按下Esc键则退出uCOS_II
if (PC_GetKey(&key) == TRUE) 
{
            if (key == 0x1B) 
   {
                C_DOSReturn();
            }                 }
        OSTimeDlyHMSM(0, 0, 3, 0); //等待
}            2)下面是完整的程序和实验的结果但是为什么这一堆m是一起出来
......
---------------------------------

楼主怎样在PC上搭建ucosii的环境?能教教我吗?我也刚学这个,还没搭好环境,谢谢了
回复 支持 反对

使用道具 举报

4

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2013-7-18
在线时间
0 小时
发表于 2013-9-29 09:14:24 | 显示全部楼层
OSTime执行延时程序时,交出CPU控制权,去执行其它任务优先级高的程序。 研究了一段时间UCOSII,还没有用这做实际的工程项目,想将以前裸奔的改成操作系统,呵呵共同学习。
好好学习,明天向上
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-22
在线时间
21 小时
 楼主| 发表于 2014-2-8 21:51:27 | 显示全部楼层
回复【11楼】rixwyg:
---------------------------------
额,考研的原因好久没有上论坛了,不知道还需要吗?
回复 支持 反对

使用道具 举报

4

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2013-7-18
在线时间
0 小时
发表于 2014-2-9 10:09:08 | 显示全部楼层
需要搭建什么环境?不就是用BC31编译后,在DOS下执行编译后的文件吗?
好好学习,明天向上
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-22
在线时间
21 小时
 楼主| 发表于 2014-2-19 14:28:01 | 显示全部楼层
回复【14楼】kuangnan:
---------------------------------
对,就是这样就行。但是作为一个小白,也捣鼓了半天......尤其是编译的时候文件的位置没放在c盘根目录下,折磨了我半天啊
回复 支持 反对

使用道具 举报

62

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2013-11-15
在线时间
85 小时
发表于 2014-3-24 11:15:57 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
任哲的书是哪本啊?可否给个全称,或者封面截图。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-24 12:17:46 | 显示全部楼层
任哲-嵌入式实时操作系统μCOS-II原理及应用
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-13 10:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表