OpenEdv-开源电子网

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

又来求助大家了

[复制链接]

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
发表于 2018-8-22 20:31:03 | 显示全部楼层 |阅读模式
5金钱

怎样让任务1、2执行的时候,任务3、4停止,
     任务3、4执行的时候,任务1、2停止,
         由于必须保证电机1、2同时运动,电机3、4同时运动,
         我采用了RTX操作系统,有哪位大哥能帮我看看这个问题吗?不胜感激!
         (我试着用了 标志位,不知道什么原因任务就执行不了了)

1234.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6768

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13151
金钱
13151
注册时间
2012-11-26
在线时间
3816 小时
发表于 2018-8-22 21:08:47 | 显示全部楼层
UCOS FREERTOS都有挂起恢复的功能,RTX没用过
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-23 08:10:09 | 显示全部楼层
讲道理也是有挂起功能的,,就是任务1、2运行的时候挂起3、4,3、4运行的时候挂起1、2,看一下教程手册上写的如何挂起。。RTX没用过
猪猪熊呢?
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-8-23 08:37:02 | 显示全部楼层
RTX表示没有接触过,帮顶
十六进制带我飞。
回复

使用道具 举报

2

主题

686

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
10979
金钱
10979
注册时间
2014-6-12
在线时间
1045 小时
发表于 2018-8-23 08:59:07 | 显示全部楼层
设立标志,任务根据标志决定执行与否。
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
发表于 2018-8-23 09:20:55 | 显示全部楼层
最简单,标志位
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 10:17:36 | 显示全部楼层
jermy_z 发表于 2018-8-22 21:08
UCOS FREERTOS都有挂起恢复的功能,RTX没用过

感谢回复!
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 10:18:13 | 显示全部楼层
323232 发表于 2018-8-23 08:10
讲道理也是有挂起功能的,,就是任务1、2运行的时候挂起3、4,3、4运行的时候挂起1、2,看一下教程手册上写 ...

好的,感谢回复!
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 10:18:24 | 显示全部楼层
DreamWaterPro 发表于 2018-8-23 08:37
RTX表示没有接触过,帮顶

好的,感谢回复!
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 10:19:21 | 显示全部楼层
xuyaqi 发表于 2018-8-23 08:59
设立标志,任务根据标志决定执行与否。

我设了标志位,根本不行,难道是我程序出错了?
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 10:19:38 | 显示全部楼层

我设了标志位,根本不行,难道是我程序出错了?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-23 10:26:55 | 显示全部楼层
白纸扇001 发表于 2018-8-23 10:19
我设了标志位,根本不行,难道是我程序出错了?

你程序怎么写的?
我觉得如果要加标志位的话单独弄个任务来变标志位,标志位任务优先级比电机任务高一级或者同级,如果高一级就用阻滞(RTX应该也有吧...),同级就一起运行。标志位任务里根据条件改变标志位,然后删除不需要运行的任务,添加要运行的任务,这样就不需要在任务里写判断标志位了
猪猪熊呢?
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 11:21:02 | 显示全部楼层
xuyaqi 发表于 2018-8-23 08:59
设立标志,任务根据标志决定执行与否。


u8 flag1=0;
u8 flag2=0;

__task 任务1
{
  while(1)
  {  
   if(flag1==0)
    {
          flag1=1;
      电机1正转10秒;
      电机2正转5秒;
      flag2=1;       
    }
        else 电机1 、2停止
  }
}

任务2
__task 任务2
{
  while(1)
  {
   if(flag1==0)
   {
          flag1=1;
      电机2反转5秒;
      电机1反转10秒;       
      flag2=1;
    }
        else 电机1 、2停止
  }
}

任务3
__task 任务3
{
  while(1)
  {
   if(flag2==1)
    {
          flag2=0;
      电机3正转10秒;
      电机4正转5秒;
          flag1=0;
    }
        else 电机3 、4停止
  }
}
任务4
__task 任务4
{
  while(1)
  {
   if(flag2==1)
    {
          flag2=0;
      电机4反转5秒;
      电机3反转10秒;
      flag1=0;       
    }
        else 电机3 、4停止
  }
}

困惑 怎样让任务1、2执行的时候,任务3、4停止,
     任务3、4执行的时候,任务1、2停止,
         由于必须保证电机1、2同时运动,电机3、4同时运动,
         我采用了RTX操作系统,有哪位大哥能帮我看看这个问题吗?不胜感激!
         (我试着用了 标志位,不知道什么原因任务就执行不了了)
这个是刚改的程序,还请朋友你帮忙看看哈,感谢了!{:16:}                           
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 11:21:13 | 显示全部楼层


u8 flag1=0;
u8 flag2=0;

__task 任务1
{
  while(1)
  {  
   if(flag1==0)
    {
          flag1=1;
      电机1正转10秒;
      电机2正转5秒;
      flag2=1;       
    }
        else 电机1 、2停止
  }
}

任务2
__task 任务2
{
  while(1)
  {
   if(flag1==0)
   {
          flag1=1;
      电机2反转5秒;
      电机1反转10秒;       
      flag2=1;
    }
        else 电机1 、2停止
  }
}

任务3
__task 任务3
{
  while(1)
  {
   if(flag2==1)
    {
          flag2=0;
      电机3正转10秒;
      电机4正转5秒;
          flag1=0;
    }
        else 电机3 、4停止
  }
}
任务4
__task 任务4
{
  while(1)
  {
   if(flag2==1)
    {
          flag2=0;
      电机4反转5秒;
      电机3反转10秒;
      flag1=0;       
    }
        else 电机3 、4停止
  }
}

困惑 怎样让任务1、2执行的时候,任务3、4停止,
     任务3、4执行的时候,任务1、2停止,
         由于必须保证电机1、2同时运动,电机3、4同时运动,
         我采用了RTX操作系统,有哪位大哥能帮我看看这个问题吗?不胜感激!
         (我试着用了 标志位,不知道什么原因任务就执行不了了)
这个是刚改的程序,还请朋友你帮忙看看哈,感谢了!{:16:}                           
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 11:21:52 | 显示全部楼层
323232 发表于 2018-8-23 10:26
你程序怎么写的?
我觉得如果要加标志位的话单独弄个任务来变标志位,标志位任务优先级比电机任务高一级 ...


u8 flag1=0;
u8 flag2=0;

__task 任务1
{
  while(1)
  {  
   if(flag1==0)
    {
          flag1=1;
      电机1正转10秒;
      电机2正转5秒;
      flag2=1;       
    }
        else 电机1 、2停止
  }
}

任务2
__task 任务2
{
  while(1)
  {
   if(flag1==0)
   {
          flag1=1;
      电机2反转5秒;
      电机1反转10秒;       
      flag2=1;
    }
        else 电机1 、2停止
  }
}

任务3
__task 任务3
{
  while(1)
  {
   if(flag2==1)
    {
          flag2=0;
      电机3正转10秒;
      电机4正转5秒;
          flag1=0;
    }
        else 电机3 、4停止
  }
}
任务4
__task 任务4
{
  while(1)
  {
   if(flag2==1)
    {
          flag2=0;
      电机4反转5秒;
      电机3反转10秒;
      flag1=0;       
    }
        else 电机3 、4停止
  }
}

困惑 怎样让任务1、2执行的时候,任务3、4停止,
     任务3、4执行的时候,任务1、2停止,
         由于必须保证电机1、2同时运动,电机3、4同时运动,
         我采用了RTX操作系统,有哪位大哥能帮我看看这个问题吗?不胜感激!
         (我试着用了 标志位,不知道什么原因任务就执行不了了)
这个是刚改的程序,还请朋友你帮忙看看哈,感谢了!{:16:}                           
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-23 11:35:47 | 显示全部楼层

你是想运行一次任务1、任务2,然后运行任务3、任务4,然后在运行任务1、任务2这样吗?
添加任务的时候可以只让他运行一次吗?看看有没有这个参数,我还是不懂LZ这么做的目的是什么
猪猪熊呢?
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 11:40:49 | 显示全部楼层
323232 发表于 2018-8-23 11:35
你是想运行一次任务1、任务2,然后运行任务3、任务4,然后在运行任务1、任务2这样吗?
添加任务的时候可 ...

就是想让任务1、2和任务3、4交替运行,我想做个双足机器人玩玩
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-23 11:49:36 | 显示全部楼层
白纸扇001 发表于 2018-8-23 11:40
就是想让任务1、2和任务3、4交替运行,我想做个双足机器人玩玩

首先你写的程序现象是什么?是完全不行还是只抬了一条腿?

任务1、任务2是同时进行的?还是有顺序的?
如果是顺序进行的,你任务1运行完,任务2是进不去的;如果是同时,任务也是有先后的,做不到同时的。

猪猪熊呢?
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 14:24:56 | 显示全部楼层
323232 发表于 2018-8-23 11:49
首先你写的程序现象是什么?是完全不行还是只抬了一条腿?

任务1、任务2是同时进行的?还是有顺序的? ...

现在的现象是 只有 任务1 2工作,即只有一条腿能动,任务3 4 不工作。
回复

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2018-8-23 15:02:15 | 显示全部楼层
思路上我不是很赞同,OS下的任务一般来说是对功能的划分,像你这种电机的运动是相互配合的,本质上共同组成了某个功能,一般我做的话,我还是会在一个任务里面完成,而如果某个电机是负责行进,某个电机是负责散热,这种情况我会用两个任务负责各自部分
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2350
金钱
2350
注册时间
2017-12-11
在线时间
499 小时
 楼主| 发表于 2018-8-23 15:45:02 | 显示全部楼层
哆啦A萌 发表于 2018-8-23 15:02
思路上我不是很赞同,OS下的任务一般来说是对功能的划分,像你这种电机的运动是相互配合的,本质上共同组成 ...

可是如果要求电机的转速不同,运转时间也不同,还要保证一定了同步性(电机1 2 同时运功),该怎么弄?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-11 10:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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