OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 689|回复: 10

FreeRTOS任务调度优先级

[复制链接]

  离线 

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-12-8
在线时间
7 小时
发表于 2017-10-21 10:59:52 | 显示全部楼层 |阅读模式
1金钱
由于刚开始使用FreeRTOS,所以有很多问题,也正在学习。
请问各位,假如优先级高的任务时间片用完后,会直接在就绪列表中调用低优先级任务么?
假设:
Task_A 优先级为2,Task_B 优先级为1,Task_C 优先级为1,时间片长度为1ms。
我该怎样实现Task_A 连续运行3ms,每10ms运行一次。
请各位解答。谢谢。

回复

使用道具 举报

  离线 

74

主题

6610

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
13188
金钱
13188
注册时间
2013-11-13
在线时间
1525 小时
发表于 2017-10-21 11:17:22 | 显示全部楼层
高优先级任务时间片运行完以后,任务调度器重新在就绪列表中找一个优先级最高的任务接着运行。
回复

使用道具 举报

  离线 

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-12-8
在线时间
7 小时
 楼主| 发表于 2017-10-21 13:24:44 | 显示全部楼层
zuozhongkai 发表于 2017-10-21 11:17
高优先级任务时间片运行完以后,任务调度器重新在就绪列表中找一个优先级最高的任务接着运行。

可以实现让一个任务连续运行几个时间片么?
回复

使用道具 举报

  离线 

21

主题

176

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2017-11-29
在线时间
104 小时
发表于 2018-4-5 09:35:04 来自手机 | 显示全部楼层
板蓝根 发表于 2017-10-21 13:24
可以实现让一个任务连续运行几个时间片么?

这个怎么做的?一个任务连续运行几个时间片。 你看这样行吗:把其他任务挂起,就自个儿运行,可以吗?
回复

使用道具 举报

  离线 

16

主题

258

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1368
金钱
1368
注册时间
2017-7-6
在线时间
193 小时
发表于 2018-4-9 14:04:55 | 显示全部楼层
正点原子公众号
板蓝根 发表于 2017-10-21 13:24
可以实现让一个任务连续运行几个时间片么?

任务跑多久是由你代码决定的啊,另外高优先级处于就绪态的时候,在每个时钟节拍到来的时候都会抢占CPU
回复

使用道具 举报

  离线 

16

主题

258

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1368
金钱
1368
注册时间
2017-7-6
在线时间
193 小时
发表于 2018-4-10 22:51:31 | 显示全部楼层
task_A是最高优先级任务,它只要不自己释放CPU就会一直跑,跑多久都不是事,到你认为可以停下来的地方切换任务(调用绝对延时函数vTaskDelayUntil())。
回复

使用道具 举报

  离线 

21

主题

176

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2017-11-29
在线时间
104 小时
发表于 2018-4-11 08:50:26 来自手机 | 显示全部楼层
1547674987 发表于 2018-4-10 22:51
task_A是最高优先级任务,它只要不自己释放CPU就会一直跑,跑多久都不是事,到你认为可以停下来的地方切换 ...

这个A任务是最高优先级,里面如果不调用延时函数,难道A要独占CPU?其他低优先级的任务B,C...永远得不到运行???
回复

使用道具 举报

  离线 

16

主题

258

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1368
金钱
1368
注册时间
2017-7-6
在线时间
193 小时
发表于 2018-4-11 08:58:40 | 显示全部楼层
wen619 发表于 2018-4-11 08:50
这个A任务是最高优先级,里面如果不调用延时函数,难道A要独占CPU?其他低优先级的任务B,C...永远得不到 ...

我是回复楼主的,它要求A连续运行3MS,我说你都是最高优先级了, 你想跑多久跑多久(一般来说你代码运行到某个地方就可以切换任务了),我没说不调用延时函数切换任务啊,你看完。
回复

使用道具 举报

  离线 

21

主题

176

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2017-11-29
在线时间
104 小时
发表于 2018-4-11 10:14:20 来自手机 | 显示全部楼层
1547674987 发表于 2018-4-11 08:58
我是回复楼主的,它要求A连续运行3MS,我说你都是最高优先级了, 你想跑多久跑多久(一般来说你代码运行 ...

谢谢。我在想一个最高级的任务里面如果不调用会引起任务切换的API,假设没有中断发生,它是否独占CPU,这样的话整个工程不就完蛋了?
回复

使用道具 举报

  离线 

16

主题

258

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1368
金钱
1368
注册时间
2017-7-6
在线时间
193 小时
发表于 2018-4-11 13:28:39 | 显示全部楼层
wen619 发表于 2018-4-11 10:14
谢谢。我在想一个最高级的任务里面如果不调用会引起任务切换的API,假设没有中断发生,它是否独占CPU,这 ...

你可以试试这样,最高优先级任务不释放CPU就等于跑裸机,反正别的任务不会执行了
回复

使用道具 举报

  离线 

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-5-19
在线时间
10 小时
发表于 2018-5-19 02:40:02 | 显示全部楼层
最高优先级不被释放其他任务不执行
回复

使用道具 举报

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

本版积分规则




关闭

必看:"原子哥”力荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-8-16 02:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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