zoukankan      html  css  js  c++  java
  • 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、作用:我们开下原子的解释:

     

     

     

     

      

  • 相关阅读:
    微信小程序 | 小程序的转发问题
    开发辅助 | 前端开发工程师必懂的 UI 知识
    微信小程序 | canvas绘图
    服务端 | Linux 学习总结 (一)
    移动端适配 | 适配方案总结
    开发工具 | 利用 deployd 搭建个人博客
    1.10 组织好代码文件,要有“用户思维”
    1.9 组织好代码段,让人对它“一见钟情”
    《计算机是怎样跑起来的》读书笔记(1)
    实用网站收藏
  • 原文地址:https://www.cnblogs.com/data-base-of-ssy/p/6482811.html
Copyright © 2011-2022 走看看