你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
讨论下FreeRTOS抢占式任务调度
[复制链接]
liuzhidao
提问时间:2019-6-6 17:00 /
问答
是否解决:
测试条件:
系统滴答时钟1ms。
FreeRTOS设定为抢占式调度。
两个任务,分别为Task1,任务优先级为2;Task2,任务优先级为1。
Task1任务
{
xxx算法;
delay(10);
}
Task2任务
{
大于10ms的for循环
delay(10);
}
先执行Task1,执行到delay时,切换到Task2,由于Task2执行“大于10ms的for循环”,这个过程中Task1的延时已经过了,这种情况下FreeRTOS如何调度任务?
点评
xiaojie0513
1,systick中断中将task1恢复,并且强制task2的cpu使用权,无论是什么情况,系统运行的永远是处于最高优先级的就绪任务,(临界段、中断上下文环境...
发表于 2019-6-18 14:08
赞
0
收藏
0
评论
4
分享
发布时间:2019-6-6 17:00
举报
请先
登录
后回复
4个回答
longforljy
回答时间:2019-6-13 13:54:38
a0a.1 32b0c
我猜应该是顺延?
评分
参与人数
1
蝴蝶豆
+1
收起
理由
STMCU
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
liuzhidao
回答时间:2019-6-17 16:57:59
a0a.1 32b0c
测试的情况是在低优先级的任务中,如果有高优先级的任务就绪,会抢占cpu资源去执行高优先级任务
这时候低优先级中即使已经在执行需要时间很长的算法,也会被操作系统的tick时钟或者其他中断给打断
这就是抢占式的调度,配置信息如下:
#define configUSE_PREEMPTION 1
同时FreeRTOS能支持同优先级任务,可以使用任务间的时间片调度算法(即相同优先级的任务使用时间片轮回调度算法),如下配置:
#define configUSE_TIME_SLICING 1
赞
0
评论
回复
支持
反对
踮起脚摘苹果
回答时间:2020-2-10 22:16:10
a0a.1 32b0c
既然Task2的优先级比Task1高,应该是Task1先执行,for循环中要大于10ms,则在10ms后满足条件进入,在执行下一行
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
这时候低优先级中即使已经在执行需要时间很长的算法,也会被操作系统的tick时钟或者其他中断给打断
这就是抢占式的调度,配置信息如下:
#define configUSE_PREEMPTION 1
同时FreeRTOS能支持同优先级任务,可以使用任务间的时间片调度算法(即相同优先级的任务使用时间片轮回调度算法),如下配置:
#define configUSE_TIME_SLICING 1