1.内部任务-空闲任务
在uC/OS-III初始化的时候,它会创建至少2个内部的任务(OS_IdleTask()和OS_TickTask()), 3个可选择的任务 ( OS_StatTask(),OS_TmrTaks(), OS_IntQTask())。这些可选择的任务在编译时由OS_CFG.H中的配置决定。
2.空闲任务 OS_IdleTask()
OS_IdleTask()是uC/OS-III最先创建的任务。它的优先级通常是OS_CFG_PRIO_MAX-1。事实上,为了安全,它应该独占这个优先级。在其他任务创建的时候, OSTaskCreate()会确保他们不会跟空闲任务有相同的优先级。当CPU中没有其它就绪任务运行时,空闲会被运行。空闲任务的重要部分代码如下 ( 详见OS_CORE.C中的全部代码)

( 1).空闲任务是一个无限循环的不会等待任何事件的任务。这是因为, 在大部分的处理器中, 当没有事情可做时, 处理器依然会执行指令。当uC/OS-III中没有其它更高的就绪任务待运行时,uC/OS-III就会把CPU分配给空闲任务。
( 2).空闲任务运行时,两个计数变量会递增。OSIdleTaskCtr是用32位无符号整数定义的, 在uC/OS-III初始化的时候它的值被复位。它用于表示空闲任务的活动情况。换句话说,如果用调试器查看该变量,就会看到介于0x00000000和0xffffffff之
间的数。 OSIdleTaskCtr的增长速度取决于CPU的空闲情况。 CPU越空闲,该值增长越快。
OSStatTaskCtr也是用32位无符号整数定义的,提供给测量任务测量CPU的利用率。
( 3).空闲任务的每次循环,都会调用OSIdleTaskHook()函数,这个函数提供给用户扩展应用。在这个函数中不要编写会让空闲任务被挂起的代码,对于uC/OS-III移植者来说这是一个常识。
OSIdleTaskHook()可以编写使CPU处于低功耗的代码。然而,这样的话就意味着OSStatTaskCtr不能再用于测量CPU的使用率了。

通常情况下,当中断发生时处理器退出低功耗模式。 ISR中可能会设置某些寄存器恢复CPU速度为全速或其想要的速度。 ISR可以唤醒了一个高优先级任务 ( 每个任务的优先级都比空闲任务的优先级高), 然后ISR不会返回到空闲任务, 而是切换到这个高优先级任务。如果这个任务完成操作或者挂起, uC/OS-III就会切换到空闲任务并进入OSIdleTaskHook()并进入低功耗模式。 然后, 进入OS_IdleTask()并循环。

10.4-uC/OS-III内部任务(空闲任务OS_IdleTask())的更多相关文章

  1. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  2. uC/OS - III 移植 IAR平台

    关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 ...

  3. uC/OS II原理分析及源码阅读(一)

    uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和 ...

  4. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...

  5. uc/os 任务删除

    问题描述:     uc/os 任务删除 问题解决: uc/os任务删除流程图 具体代码 注:     如上是关中断,以及取消优先级对应的就绪标志 关中断代码为: 取消就绪标志,实际上是将就绪表中指定 ...

  6. 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II

    SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...

  7. 在STM32F401上移植uC/OS的一个小问题 [原创]

    STM32F401xx是意法半导体新推出的Cortex-M4内核的MCU,相较于已经非常流行的STM32F407xx和STM32F427xx等相同内核的MCU而言,其特点是功耗仅为128uA/MHz, ...

  8. uc/os任务创建

    问题描述:      uc/os中任务创建 问题解决: 创建一个任务,任务从无到有.任务创建函数分两种, 一种是基本的创建函数OSTaskCreate, 另一种是扩展的任务创建函数OSTaskCrea ...

  9. uC/OS 的任务调度解析 (转)

    uC/OS 的任务调度解析 1.任务调度器启动之后(初始化,主要是TCB的初始化),就可以创建任务,开始任务调度了,实际上第一个任务准确的说不是进行任务切换,而是进行启动当前最高优先级任务.uC/OS ...

随机推荐

  1. Oracle中Select语句完整的执行顺序

    oracle Select语句完整的执行顺序: .from 子句组装来自不同数据源的数据: .where 子句基于指定的条件对记录行进行筛选: .group by子句将数据划分为多个分组: .使用聚集 ...

  2. 错误代码CS0051可访问性不一致_解决方案

    一.问题的出现 用C#在写多线程时报错 二.解决方案 1,分析思路 本来对BaseStruct设置为私有访问,但调用时又想公开化,从而造成了编译错误. 2,解决 将红色部分改为公有 3,总结 注意pu ...

  3. (原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况

     转载请注明出处:http://www.cnblogs.com/lihaiping/p/6612511.html 今天同事准备在android下使用ffmpeg来获取rtsp流,问我如何获取获取sps ...

  4. 将Highcharts图表数据生成Table表格

    有的时候,我们不仅仅需要漂亮的统计图来显示统计结果,还需要在统计图下方一个表格可以更加直观的展现各类数据.既然统计图都显示出来了,那我们可以根据统计图的各元素生成表格了. 首先,先显示统计图. Htm ...

  5. react-router 4.3 js实现跳转

    import React, {Component} from 'react'; import { NavLink,Link } from "react-router-dom"; i ...

  6. 卡通渲染Shader

    http://www.opengpu.org/forum.php?mod=viewthread&tid=17071http://www.opengpu.org/bbs/forum.php?mo ...

  7. 解决Win10 Virtualbox5.2.18桥接不能联网小记

    1.设备管理器,右键没添加过时硬件(如果没有,则在cmd中键入命令hdwwiz C:\windows\system32>hdwwiz),按照如下图操作 如此安装Microsoft KM-TEST ...

  8. ng4.0 生命周期

    名称 时机 接口 范围 ngOnChanges 当被绑定的输入属性的值发生变化时调用,首次调用一定会发生在 ngOnInit之前. OnChanges 指令和组件 ngOnInit 在第一轮 ngOn ...

  9. [转]linux 调用动态库so文件

    记录一个面试被问到的问题. extern 有什么用途? 除了多文件共享全局变量外还有呢? extern "C" 的功能? 我想看完这篇文章就可以知道第三个问题了. 关于动态调用动态 ...

  10. Managing Hierarchical Data in MySQL(邻接表模型)[转载]

    原文在:http://dev.mysql.com/tech-resources/articles/hierarchical-data.html 来源: http://www.cnblogs.com/p ...