OpenEdv-开源电子网

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

请大家帮我看看我的程序为什么只能执行一个任务??

[复制链接]

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
发表于 2015-7-12 16:35:26 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#include "includes.h" OS_STK task_led2_stk[TASK_LED2_STK_SIZE]; void Task_Led2( void *p_arg) { u32 aa; (void)p_arg; while(1) { GPIO_SetBits(GPIOG,GPIO_Pin_14); aa=2000000; while(aa--); GPIO_ResetBits(GPIOG,GPIO_Pin_14); aa=2000000; while(aa--); } } void Task_Start(void *p_arg) { u32 aa; (void)p_arg; SysTick_Init(); OSTaskCreate(Task_Led2,(void *)0, &task_led2_stk[STARTUP_TASK_STK_SIZE-1], LED2_TASK_PRIO); while(1) { GPIO_SetBits(GPIOD,GPIO_Pin_13); aa=2000000; while(aa--); GPIO_ResetBits(GPIOD,GPIO_Pin_13); aa=2000000; while(aa--); } } [/mw_shl_code]

[mw_shl_code=c,true]#include "includes.h" static OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE]; int main( void ) { BSP_Init(); OSInit(); OSTaskCreate(Task_Start,(void *)0, &startup_task_stk[STARTUP_TASK_STK_SIZE-1], STARTUP_TASK_PRIO); OSStart(); return 0; } [/mw_shl_code]

[mw_shl_code=c,true]#ifndef _APP_CFG_H__ #define _APP_CFG_H__ #define STARTUP_TASK_PRIO 4 #define LED2_TASK_PRIO 5 #define TASK_LED2_STK_SIZE 80 #define STARTUP_TASK_STK_SIZE 80 void Task_Start(void *p_arg); void Task_Led2( void *p_arg); #endif [/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

回复【11楼】叶念西风: --------------------------------- UCOSII是抢占式的,不能设定 USOSIII 增加了时间片轮法
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2015-7-12 16:35:27 | 显示全部楼层
回复【11楼】叶念西风:
---------------------------------
UCOSII是抢占式的,不能设定
USOSIII 增加了时间片轮法
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-12 16:36:22 | 显示全部楼层
为什么只有STARTUP任务里的LED灯闪烁  其他的都不闪烁
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2015-7-12 16:57:32 | 显示全部楼层
有你这么玩操作系统的吗?
任务里面不调用延时,怎么让cpu释放资源去执行低优先级任务?
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-12 17:07:54 | 显示全部楼层
回复【3楼】STM32VBT6:
---------------------------------
恩恩  我把延迟换成OSTimeDlyHMSM(0,0,0,200);就没有问题了   可是任务之间的切换需要我们来操作吗?那样的话这个系统怎么会是实时的呢?
回复

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2015-7-12 17:13:27 | 显示全部楼层
回复【4楼】叶念西风:
---------------------------------
不需要,这是操作系统要做的事
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-12 17:17:50 | 显示全部楼层
回复【5楼】2449164582:
---------------------------------
那我上面的程序为什么我一直执行第一个任务呢?他们两个任务不是应该交替执行吗?
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-12 17:21:28 | 显示全部楼层
或者是说我任务1里面没有延迟  那么其他任务是不是就不能执行了呢?
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3308
金钱
3308
注册时间
2013-4-10
在线时间
328 小时
发表于 2015-7-12 17:27:21 | 显示全部楼层
回复【7楼】叶念西风:
---------------------------------
每个任务完成工作后,要给其它任务运行的机会!这样多任务才能全部运行起来,因为CPU只有一个,
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-12 17:39:28 | 显示全部楼层
回复【8楼】likunxue:
---------------------------------
那么可不可以这样理解,操作系统是把低优先级的任务在高优先级空闲的时候运行???
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3308
金钱
3308
注册时间
2013-4-10
在线时间
328 小时
发表于 2015-7-12 17:59:37 | 显示全部楼层
回复【9楼】叶念西风:
---------------------------------
这个还跟你的操作系统的工和类型有关,如果操作系统是按时间片调度,哪一般都是将全部任务的调度工作按顺序做成一个队连,一个一个的来,当然我说的这种只是简单的多任务情况,
有抢占式优先级的系统,在工作时先运行优先级高的任务(中断除外)只有高优先级的任务放掉CPU使用权后,低优先级的任务才能得到CPU的使用权,比如等信号量,延时一段时间等,也可以理解为你的哪种说法,但实际上,其它低优先级的任务并是不是高优先级的任务里运行,需是经过任务调度器将CPU的使用权分配给了低优先级的任务,在下一次任务调度时如果高优先级的任务需要使用CPU (比如延迟时间到了,或等的信号量到来等)任务调度器都会再次将CPU的使用权交由高优先级的任务先使用,所以要让低优先级的任务能分配到CPU的使权,需要要每个任务中合理的分配CPU的使用时间。
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-12 19:47:25 | 显示全部楼层
回复【10楼】likunxue:
---------------------------------
那UCOSII是哪种类型?是不是可以自己设定啊?
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3308
金钱
3308
注册时间
2013-4-10
在线时间
328 小时
发表于 2015-7-12 20:18:51 | 显示全部楼层
回复【11楼】叶念西风:
---------------------------------
不可以自已设定!!!
UC0S|| 是常见的实时操用系统  是由美国人 Jean Labrosse 于1992年完成的,1998年发展到 UCOS_|| 日前常用的是 UCOS_|||
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-12 20:39:18 | 显示全部楼层
回复【13楼】2449164582:
---------------------------------
哦哦  好的   太谢谢各位了哈
回复

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-7-13 12:57:09 | 显示全部楼层
回复【14楼】叶念西风:
---------------------------------
我终于知道为什么有的人一周就能学会UCOSII了
合肥-文盲
回复

使用道具 举报

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-2-17
在线时间
3 小时
 楼主| 发表于 2015-7-14 13:07:12 | 显示全部楼层
回复【15楼】合肥-文盲:
---------------------------------
为什么?
回复

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-7-14 14:30:43 | 显示全部楼层
回复【16楼】叶念西风:
---------------------------------
因为直接上实战,从实战中再去看这个操作系统是怎么实现任务管理的
合肥-文盲
回复

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2016-6-6 17:12:00 | 显示全部楼层
确实是
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 19:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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