搜索
查看: 6159|回复: 5

[原创] FreeRTOS之抢占优先级的任务管理

[复制链接]

该用户从未签到

37

主题

206

帖子

0

蝴蝶豆

金牌会员

最后登录
2018-12-27
发表于 2017-9-6 17:37:15 | 显示全部楼层 |阅读模式
1X__H6MPECJDJ2]{IBUAD7P.png
这个是为1 时使用抢占式调度器,为 0 时使用协程。如果使用抢占式调度器的话内核会在每个时
钟节拍中断中进行任务切换,当使用协程的话会在如下地方进行任务切换:
● 一个任务调用了函数 taskYIELD()。
● 一个任务调用了可以使任务进入阻塞态的 API 函数。
● 应用程序明确定义了在中断中执行上下文切换
这里我们使用的是抢占优先级,在这里说明一点就是优先级越大,则对应的优先级的数字越大,
在这里需要知道一个函数就是vTaskDelay();这个是任务调度函数的一个设置的时间,意思就是说我可以通过设置这个函数的时间来设置这个任务阻塞的时间,也就是说你设置的这个时间就是下一次进入这个任务需要等待的时间。如果你自己写的时间delay函数就没有这个功能,只是单纯的延时。
介绍完这一点后,再来说说这个抢占优先级。抢占的意思,当一个优先级最高的任务执行完一次后,如果这个任务设置了阻塞时间的话,会出现一个抢占,,也就是说优先级第二高的任务开始执行,如果这个任务也设置了阻塞时间的话,那么当执行完这次任务后,也会出现一个抢占,如果第一个优先级的任务到了阻塞时间的话,那么他就会开始执行任务,如果没有到的话,就第三个优先级的任务执行,以后依次这样执行。如果第一个任务没有时间阻塞的话,他就会一直抢占CPU,所以剩下的其他任务都不会执行了,如果其他的任务中一个也没有阻塞的话,那么程序执行到这个任务的时候,其他的任务也不会运行了,CPU会一直被这个任务所占有。
所以从这里可以看出来,在每个任务中都需要加一个任务阻塞执行的时间是必须的,一定要加的,除非你想只执行一个任务。
刚刚接触FreeROTS,不知道理解的对不对,如果我说错了,希望大佬们能够指出来!!!!!!

评分

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

查看全部评分

回复

使用道具 举报

该用户从未签到

64

主题

809

帖子

23

蝴蝶豆

实习版主

最后登录
2021-4-25
发表于 2017-9-6 17:45:49 | 显示全部楼层
楼主主题配色真漂亮啊,能共享一份么
回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

206

帖子

0

蝴蝶豆

金牌会员

最后登录
2018-12-27
 楼主| 发表于 2017-9-6 19:19:46 | 显示全部楼层
哈佛祖安智 发表于 2017-9-6 17:45
楼主主题配色真漂亮啊,能共享一份么

https://pan.baidu.com/s/1dF1rMEl
密码pyf7
回复 支持 反对

使用道具 举报

该用户从未签到

47

主题

3456

帖子

30

蝴蝶豆

版主

最后登录
2022-12-25
发表于 2017-9-6 20:11:29 | 显示全部楼层
学习了。。多谢
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 2018-10-8 12:30:53 | 显示全部楼层
    在路上11111111 发表于 2017-9-6 19:19
    https://pan.baidu.com/s/1dF1rMEl
    密码pyf7

    多谢分享,配色的确不错。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2018-10-12
    发表于 2018-10-10 15:37:38 | 显示全部楼层
    谢谢楼主分享
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-5-1 12:16 , Processed in 1.189213 second(s), 43 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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