UCOS操作系统

文章目录

  • UCOS操作系统
  • 前言
  • 一、空闲任务
  • 二、时钟节拍任务
  • 三、统计任务
  • 四、定时任务
  • 五、中断服务管理任务
  • 六、钩子函数

前言

在 UCOSIII 中系统内部任务扩展到了 5 个部分:
1 空闲任务
2 时钟节拍任务
3 统计任务
4 定时任务
5 中断服务管理任务
6 钩子函数

一、空闲任务

OS_IdleTask(),在 os_core.c 文件中定义。任务 OS_IdleTask()是必须创建的,不过不需要手动创建,在调用 OS_Init()初始化 UCOS 的时候就会被创建。

空闲任务特点:
1、空闲任务是UCOSIII创建的第一个任务。
2、空闲任务是UCOSIII必须创建的。
3、空闲任务优先级总是为OS_CFG_PRIO_MAK-1。
4、空闲任务中不能调用任何可使空闲任务进入等待态的函数!

二、时钟节拍任务

时钟节拍任务用来跟踪任务延时和任务等待超时,任务函数为OS_TickTask(),是UCOSIII必须创建的一个任务,任务优先级用宏OS_CFG_TICK_TASK_PRIO来定义 ,一般时钟节拍任务的任务应该设置一个相对较高的优先级。

三、统计任务

在UCOSIII中统计任务可用来统计CPU的使用率、各个任务的CPU使用率和各任务的堆栈使用情况,默认情况下统计任务是不会创建的。如果要开启统计任务的话需要做如下步骤:
1、将宏OS_CFG_STAT_TASK_EN置1。
2、必须在main函数创建的以一个任务也是唯一的一个应用任务里面调用函数OSStatTaskCPUUsageInit()。
3、统计任务的优先级通过宏OS_CFG_STAT_TASK_PRIO来设置,一般设置OS_CFG_PRIO_MAX-2,也就是倒数第二个优先级。(空闲任务倒数第一)

如果将宏 OS_CFG_STAT_TASK_STK_CHK_EN 置 1 的话表示检查任务堆栈使用情况,那么统计任务就会调用 OSTaskStkChk()函数来计算所有已创建任务的堆栈使用量,并将检测结果写入到每个任务的 OS_TCB 中的 StkFree 和 StkUsed 中

四、定时任务

UCOSIII 提供软件定时器功能,定时任务是可选的,将宏 OS_CFG_TMR_EN 设置为 1 就会使能定时任务,在 OSInit()中将会调用函数 OS_TmrInit()来创建定时任务。定时任务的优先级通过宏 OS_CFG_TMR_TASK_PRIO 定义,ALIENTEK 默认将定时器任务优先级设置为 2。

五、中断服务管理任务

当把os_cfg.h文件中的宏OS_CFG_ISR_POST_DEFERRED_EN置1就会使能中断服务管理任务,当ISR(中断服务函数)调用UCOSIII提供的“post”函数时,要发送的数据和发送的目的地都会存入一个特别的缓冲队列中,当所有嵌套的ISR都执行完成以后UCOSIII会做任务切换,运行中断服务管理任务,该任务会把缓存队列中存放的信息重发给相应的任务。这样做的好处就是可以减少中断关闭的时间,否则,在ISR中还需要把任务从等待列表中删除,并把任务放入就绪表,以及做一些其他的耗时操作。

中断服务管理任务的优先级永远为0,不可更改!

六、钩子函数

钩子函数一般主要是用来扩展其他函数(任务)功能的,钩子函数有如下几个:
1、OSIdleTaskHook(),空闲任务调用这个函数,可以用来让CPU进入低功耗模式
2、OSInitHook(),系统初始化函数OSInit()调用此函数。
3、OSStatTaskHook(),统计任务每秒中都会调用这个函数,此函数允许你向统计任务中添加自己的应用函数。
4、OSTaskCreateHook(),任务创建的钩子函数。
5、OSTaskDelHook(),任务删除的钩子函数。
6、OSTaskReturnHook(),任务意外返回时调用的钩子函数,比如删除某个任务
7、OSTaskSwHook(),任务切换时候调用的钩子函数。
8、OSTimeTickHook(),滴答定时器调用的钩子函数。
使 用 空 闲 任 务 钩 子 函 数 的 话 需 要 将 宏
OS_CFG_APP_HOOKS_EN 置 1,即允许使用空闲任务的钩子函数。

注意!在空闲任务的钩子函数中不能调用任何可以是空闲进入等待态的代码,原因很简单,CPU 总是在不停的运行,需要一直工作,不能让 CPU 停下来,哪怕是执行一些对应用没有任何用的代码,比如简单的将一个变量加一。在 UCOS 中为了让 CPU 一直工作,在所有应用任务都进入等待态的时候 CPU 会执行空闲任务,我们可以从空闲任务的任务函数 OS_IdleTask()看出,在 OS_IdleTask()中没有任何可以让空闲任务进入等待态的代码。如果在 OS_IdleTask()中有可以让空闲任务进入等待态的代码的话有可能会在同一时刻所有任务(应用任务和空闲任务)同时进入等待态,此时 CPU 就会无所事事了,所以在空闲任务的钩子函数 OSIdleTaskHook()中不能出现可以让空闲任务进入等待态的代码!这点很重要,一定要谨记!

UCOS操作系统——系统内部任务(六)相关推荐

  1. IAR中移植UCOS II系统以及sourceInsight 使用

    ucos 学习笔记 1 sourceInsight 使用 CSDN参考链接 新建工程 第一步:project中new project 第二步:在高亮部分输入工程的地址,工程文件夹与IAR工程文件夹放在 ...

  2. 图章制作软件测试自学,SecSeal安全电子印章系统内部测试大纲.doc

    SecSeal安全电子印章系统内部测试大纲 SecSeal安全电子印章系统 内部测试大纲 2004年3月 测试内容 测试人员: 测试日期: 测试软件版本: 印章管理系统: 盖章系统: 公文阅读器: 安 ...

  3. 【实时语音转文本】PC端实时语音转文本(麦克风外音系统内部音源)

    语音转文字这个功能可以应用在视频动态字幕,语音快速输入,实时记录通话内容,高级应用可以在人工智能,语音识别,智能助手方面,还需要一点机器学习可以做出一些好玩的东西,比如PC端AI助理,类似移动端的 & ...

  4. UCOSIII 系统内部任务

    在 UCOSII 中有两个系统任务:统计任务和空闲任务,在但是UCOSIII中系统内部任务扩展到了5 个 . 空闲任务.时钟节拍任务.统计任务.定时任务.中断服务管理任务.钩子函数 . 1.空闲任务: ...

  5. UCOS操作系统——信号量与互斥信号量(九)

    UCOS操作系统 文章目录 UCOS操作系统 一.信号量简介 1.二进制信号量 2.计数型信号量 二.使用信号量 1.相关API函数 2.OSSemCreate()创建信号量 3.OSSemPend( ...

  6. 操作系统学习(十六) 、任务管理

    操作系统学习(十六) .任务管理 一.任务 ​ 任务是处理器可以分配调度.执行和挂起的一个工作单元.它可用于执行程序.任务或进程.操作系统服务.中断或异常处理过程和内核代码. ​ 80x86提供了一种 ...

  7. 经典 【操作系统实验】 实验六 设备驱动程序 RH5 2.6.18 + 2.6.32 内核

    经典 [操作系统实验] 实验六 设备驱动程序 设备驱动程序 简单介绍一下2.6版本内核添加模块的方法: 虚拟块设备驱动程序内容 设备驱动程序 前言: 本文是基于Linux的设备驱动实验流程记录,涵盖了 ...

  8. 实验六 Linux进程编程,Linux系统编程实验六:进程间通信

    <Linux系统编程实验六:进程间通信>由会员分享,可在线阅读,更多相关<Linux系统编程实验六:进程间通信(10页珍藏版)>请在人人文库网上搜索. 1.实验六:进程间通信l ...

  9. Linux系统编程(六)守护进程

    Linux系统编程(六)守护进程 一.进程组 概念 二.会话 创建会话的条件 守护进程 概念 守护进程模型 创建守护进程 一.进程组 概念 进程组,也称之为作业.代表一个或多个进程的集合.每个进程都属 ...

  10. Win10:解决Win10的录音设备只能录制系统内部声音无法录制麦克风声音的问题

    Win10:解决Win10的录音设备只能录制系统内部声音无法录制麦克风声音的问题 目录 解决问题 解决思路 解决问题 Win10的录音设备只能录制系统内部声音无法录制麦克风声音的 解决思路 将麦克风设 ...

最新文章

  1. android 打包出现错误Error: ResourceName
  2. JFace中的表格型树TableTreeViewer
  3. 个人常用word技巧----平时编辑word能快不少~
  4. codeforces 516c// Drazil and Park// Codeforces Round #292(Div. 1)
  5. C++学习笔记-利用rapidJSON生成JSON数据
  6. linux下,如何迁移mysql数据库存放目录。利用软连接简单快捷实现移动到home数据盘下...
  7. 计算机维修需要工具,小200个电脑维护工具,都能去开个维修店了
  8. Hexo在博客中插入图片
  9. C语言 计算个人所得税
  10. IMPALA(Importance Weighted Actor-Learner Architectures)
  11. Win11 封杀第三方浏览器工具,不用 Edge 就不行
  12. DQN相关知识总结及演员-评论员算法介绍(DataWhale组队学习笔记)
  13. Png文件可横向拉伸html布局,png透明格式 以cad2010操作为例:
  14. Mysql 常用 时间函数
  15. pythonpost请求修改编码格式_Python请求编码POST d
  16. m4s格式转换mp3_M4A格式怎么转换成MP3
  17. [附源码]Python计算机毕业设计SSM流浪猫狗救助站(程序+LW)
  18. 【Codewars】<7kyu> Vowel Count
  19. iis6.0的网站建设及权限设置
  20. python中 r什么意思_python中w、r指的是什么意思

热门文章

  1. vue常用正则表达式
  2. A星算法优化(二)权重系数
  3. android 斜边_斜边计算器app下载|斜边计算器安卓版下载_v1.0.1_9ht安卓下载
  4. 索宝机器人_这些莞味十足的旅游商品获奖了!你尝过没?
  5. 艾宾浩斯曲线在线 PDF 文件生成 在线背单词 背单词计划表 高考-四级-六级-SAT-托福-雅思-GRE-17 天搞定 GRE 单词, 背单词神器-动态生成时间表! 利用艾宾浩斯记忆曲线自动生成背单
  6. python3.9.0a2怎么安装pygame_Python自学——pygame安装
  7. 使用ESAPI 解决veracode 漏洞
  8. x550网卡linux驱动,Intel英特尔X520/X540/X550系列网卡驱动24.3版For Win8.1/10(2019年11月4日发布)...
  9. tomcat热部署和热加载
  10. Apache自带的ab压力测试工具用法详解