8201|3

405

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

FreeRTOS调度器是如何执行的,SysTick中断中又干了啥 [复制链接]

最近入门RTOS,首先看书了解了合作式调度器的应用,其基本思想是在主循环中不断执行调度函数,在SysTick中断中更新任务状态,程序我也大致看懂了。之后到了入门FreeRTOS遇到了困难,利用了stm32的官方例程,原理上的东西大致懂了,可在程序中是如何实现的呢,C语言障碍,没看懂。
首先是调度函数,函数函数是如何执行的呢?如下图,新建任务后执行调度函数,为什么没用循环,调度函数是一直运行的吗?在其C语言程序中哪里可见执行任务的代码?

SysTick中断中主要更新了任务状态,它是怎么轮询每个任务的呢,在中断中决定了下一个执行的任务吗?


可能我问的任务比较繁琐,大侠们如果有空回答重点即可,程序我还是慢慢凿吧,谢谢



最新回复

对于绝大多数人来说,学习rtos主要是学习例子和应用,而不是开始就纠缠细节。  详情 回复 发表于 2016-6-10 08:59
点赞 关注(1)

回复
举报

420

帖子

0

TA的资源

纯净的硅(初级)

推荐
 
对于绝大多数人来说,学习rtos主要是学习例子和应用,而不是开始就纠缠细节。
 
 

回复

373

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
你没看到每个任务里while循环最后有个延时的函数吗,在那个函数里,系统就要查找所有已就绪的任务里优先级最高的那个,然后就通过调度器把任务切换到那个任务里了

点评

这个C语言没看太懂,延时函数中调度函数就直接切换任务了吗,任务函数难道不总是在SysTick中断中切换的吗 我昨天大致理解了在不用delay函数的任务切换,与合作式调度器基本相似,只是不需要在main函数中不断查询  详情 回复 发表于 2016-6-10 09:00
 
 
 

回复

405

帖子

1

TA的资源

一粒金砂(高级)

4
 
wudayongnb 发表于 2016-6-9 21:13
你没看到每个任务里while循环最后有个延时的函数吗,在那个函数里,系统就要查找所有已就绪的任务里优先级 ...

这个C语言没看太懂,延时函数中调度函数就直接切换任务了吗,任务函数难道不总是在SysTick中断中切换的吗

我昨天大致理解了在不用delay函数的任务切换,与合作式调度器基本相似,只是不需要在main函数中不断查询调度器然后执行函数
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表