你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

FreeRTOS之抢占优先级的任务管理

[复制链接]
在路上11111111 发布时间:2017-9-6 17:37
1X__H6MPECJDJ2]{IBUAD7P.png " g7 W3 e# T8 u) \  y
这个是为1 时使用抢占式调度器,为 0 时使用协程。如果使用抢占式调度器的话内核会在每个时
0 ^1 [# ]( R5 x3 k7 a! p: F, n$ }钟节拍中断中进行任务切换,当使用协程的话会在如下地方进行任务切换:
: }6 u$ `! K; L, {7 Z5 W● 一个任务调用了函数 taskYIELD()。
# J" h# g1 G2 h● 一个任务调用了可以使任务进入阻塞态的 API 函数。
& p. z1 q/ t! I● 应用程序明确定义了在中断中执行上下文切换0 P+ {0 V- k7 f9 m0 T# g- i5 e
这里我们使用的是抢占优先级,在这里说明一点就是优先级越大,则对应的优先级的数字越大,
7 @* p/ G- \' F1 l在这里需要知道一个函数就是vTaskDelay();这个是任务调度函数的一个设置的时间,意思就是说我可以通过设置这个函数的时间来设置这个任务阻塞的时间,也就是说你设置的这个时间就是下一次进入这个任务需要等待的时间。如果你自己写的时间delay函数就没有这个功能,只是单纯的延时。9 V3 @5 S! t5 u
介绍完这一点后,再来说说这个抢占优先级。抢占的意思,当一个优先级最高的任务执行完一次后,如果这个任务设置了阻塞时间的话,会出现一个抢占,,也就是说优先级第二高的任务开始执行,如果这个任务也设置了阻塞时间的话,那么当执行完这次任务后,也会出现一个抢占,如果第一个优先级的任务到了阻塞时间的话,那么他就会开始执行任务,如果没有到的话,就第三个优先级的任务执行,以后依次这样执行。如果第一个任务没有时间阻塞的话,他就会一直抢占CPU,所以剩下的其他任务都不会执行了,如果其他的任务中一个也没有阻塞的话,那么程序执行到这个任务的时候,其他的任务也不会运行了,CPU会一直被这个任务所占有。
/ z' y1 i& l9 m% m7 R$ A所以从这里可以看出来,在每个任务中都需要加一个任务阻塞执行的时间是必须的,一定要加的,除非你想只执行一个任务。" L; h, K9 H/ U  T2 d$ K
刚刚接触FreeROTS,不知道理解的对不对,如果我说错了,希望大佬们能够指出来!!!!!!2 S* |1 U$ a$ U; M/ ]7 u
. T0 e# T8 ^: U/ D1 P# s

评分

参与人数 1 ST金币 +20 收起 理由
creep + 20 赞一个!

查看全部评分

收藏 评论5 发布时间:2017-9-6 17:37

举报

5个回答
Stm32McuLover 回答时间:2017-9-6 17:45:49
楼主主题配色真漂亮啊,能共享一份么
在路上11111111 回答时间:2017-9-6 19:19:46
哈佛祖安智 发表于 2017-9-6 17:45
0 o6 P7 D: G' y/ G楼主主题配色真漂亮啊,能共享一份么

/ d) H  Q4 L6 r, ]3 }: chttps://pan.baidu.com/s/1dF1rMEl
* H8 }  @4 `: }7 m! g密码pyf7/ P4 {, ]! a" u, Y' ]3 y; \1 G! s# j
Paderboy 回答时间:2017-9-6 20:11:29
学习了。。多谢
七哥 回答时间:2018-10-8 12:30:53
在路上11111111 发表于 2017-9-6 19:19/ l$ e: R6 w: C& T3 h! Y1 j
https://pan.baidu.com/s/1dF1rMEl
/ j9 C8 M  O: [# _" {% O( U密码pyf7
# I  T' o1 G% m  _6 d
多谢分享,配色的确不错。
Seaman 回答时间:2018-10-10 15:37:38
谢谢楼主分享
' u( J) w" C' w: v% p4 P! q9 d

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版