• UCOSIII的系统任务


    UCOSIII的系统任务

     一、空闲任务

      空闲任务的特点:

      1、空闲任务是UCOSIII创建的第一个任务;

      2、空闲任务是UCOSIII必须要创建的;

      3、空闲任务优先级是最低的,为:“OS_CFG_PRIO_MAK - 1”,也就是倒数第一个优先级;

      4、空闲任务中不能调用任何可使空闲任务进入等待态的函数!

      小知识点:空闲任务在程序开始部分的“OSInit(&err);”函数中创建;

      空闲任务的任务函数原型在:UCOSIII源码的“os_core.c”中的大概第781行,没事可以找出来多看看上面注释都什么意思;

      二、时钟节拍任务

      时钟节拍任务的特点:

      1、时钟节拍任务用来跟踪任务延时和任务等待超时;

      2、是UCOSIII必须要创建的任务;

      3、任务优先级一般要设的高一点,任务优先级用宏“OS_CFG_TICK_TASK_PRIO”来定义;

      

      图 1

      如上图所示,列出了几个系统任务的优先级设置,时钟节拍任务的优先级仅次于中断;

      下图是这个宏定义在源码中的定义:

      

      可以看到,是在源码中“os_cfg_app.h”中定义的,不过我们用户也可以自己修改,但是原则上,这个优先级要高一点,因为时钟节拍对于整个系统来说是比较重要的,它应该要优先处理;

      三、统计任务

      特点:

      1、在UCOSIII中,统计任务可用来统计CPU的使用率、各个任务的CPU使用率和各任务的堆栈使用情况;

      2、默认情况下,系统不会自动创建该任务,也就是说,它不是必须的,如果需要用户可开启这个任务;

      3、统计任务的优先级通过宏“OS_CFG_STAT_TASK_PRIO”来设置,一般设置为“OS_CFG_PRIO_MAX - 2”,也就是倒数第二个优先级,在图一中也有说明;

      统计任务开启步骤:

      1、将宏“OS_CFG_STAT_TASK_EN”置 1;

      2、必须在main函数创建的以一个任务也是唯一的一个应用任务里面调用函数“OSStatTaskCPUUsageInit()”;

      怎么理解上面一句话呢,先看看程序里面的使用方法:

      

      按照我的理解就是,统计任务要由用户自己拿出来调用开启,也就是说需要在自己的 main 函数中写上关于统计任务开启的设置,而且你只能调用一次,(因为只需打开一次...)不能说是打开一次了又打开一次...我上面就是把他写到了任务创建函数中,这个任务函数只会执行一次,他的作用就是去专门创建用户想要的任务,事情办完之后就把自己删除了;

      四、定时任务

      特点:

      1、可选,不是必须开启的;

      2、不是用户去创建该任务,而是将宏定义打开后,由“OSInit()”来创建;

      开启方法:

      1、将宏“OS_CFG_TMR_EN”设置为 1,以使能定时任务;

      2、优先级由宏“OS_CFG_TMR_TASK_PRIO”定义;

      五、中断服务管理任务

      特点/综合:

      1、中断服务管理任务的优先级永远为 0,也就是永远最高,不可更改!

      2、可选,不是必须创建;

      3、通过宏“OS_CFG_ISR_POST_DEFERRED_EN”置 1,来开启;

      4、作用:我们开下原子的解释:

     

     

     

     

      

  • 相关阅读:
    (转)简单自定义控件
    (转)简单自定义控件2
    (转)select 1 from ... sql语句中的1代表什么意思? .
    (转)server.urlencode有什么用?怎么用?
    (转)精通 JS正则表达式
    input属性 disabled与readonly的区别
    Hibernate映射关系之_多对多
    Hibernate关联映射之_一对一
    Hibernate常用方法之_删除
    Hibernate常用方法之_修改
  • 原文地址:https://www.cnblogs.com/data-base-of-ssy/p/6482811.html
Copyright © 2020-2023  润新知