1.任务(task)也称作一个线程;

2.一个任务有5种状态:休眠,就绪,运行,挂起,被中断

休眠:任务驻留在程序空间中,还没有交给ucos管理,把任务交给ucos 是通过调用OSTaskCreate()或OSTaskCreateExt()两个函数之一实现的。

任务一旦确立将进入就绪状态。一个任务可通过调用OSTaskDel()返回到休眠状态,即被删除,或通过调用该函数让另外一个任务进入休眠状态。

就绪:如果一个任务所等待的资源除CPU外已全部获得,则处于就绪状态。如果该任务的优先级最高,则马上执行。

运行:任何时候只有一个在运行;正在运行的任务可能会因为等待某一个任务而进入等待状态,此时下一个优先级更高的进入了就绪状态被赋予了CPU

的控制权,即任务级切换。

挂起:即正在运行的任务需要等待某一事件或时间延迟的发生。当任务因等待事件被挂起时,下一个优先级更高的立即得到CPU的控制权。

当其等待的事件发生了,该被挂起的任务重新进入就绪状态。事件发生的报告可能来自另一个任务,也可能来自中断服务子程序。

被中断: 正在运行的任务可以被中断,除非该任务关闭中断,或ucos关闭中断。被中断了的任务即进入了中断服务状态。响应中断时,

正在执行的任务被挂起,中断服务子程序控制了CPU的使用权。中断服务子程序可能会报告一个或多个时间的发生,而使一个

或多个任务进入就绪状态。此时,中断服务子程序返回之前,ucos要判定被中断的任务是否还是就绪态任务中优先级最高的。

如果更高的进入了就绪状态,则他会运行,否则原来的继续运行。

3.任务操作函数集

4.任务的特点:每一个任务都是死循环,如下:

void rs485CheckTask(void *pdata)

{
  uart1_init();
  commCmdInit();
  while(1){          
 //死循环
  cmdCheckPorc();
  OSTimeDlyHMSM(0,0,0,100);
    }
}

5.内核负责每个任务的调度

任务学习-ucos的更多相关文章

  1. uc/os学习入门:在32位pc机上搭建编译环境

    由于学习ucos的入门资料中所使用的编译器大多都是Borland c ++ 3.1或者Borland c++4.5,为了降低学习的难度最好所用的编译器与书本上的一致.由于4.5版本稍高,所以最终决定用 ...

  2. uCOS-II的学习笔记(共九期)和例子(共六个)

    源:uCOS-II的学习笔记(共九期)和例子(共六个) 第一篇 :学习UCOS前的准备工作http://blog.sina.com.cn/s/blog_98ee3a930100w0eu.html 第二 ...

  3. uC/OS-II之入门与介绍20160525

    说一下刚学习uCOS的心得1)首先强调一下实时操作系统(RTOS)的特点,最明显的是提供及时响应和高可靠性2)基于实施操作系统的应用程序设计中,其中很重要的一个概念是"任务",任务 ...

  4. UCOS2_STM32移植详细过程(汇总)

    Ⅰ.概述 笔者发现一个问题,很多初学者,甚至很多工作一两年的人,他们有一种依赖的思想,就是希望从别处获取的软件代码不做任何修改,直接可以运行或者使用.笔者想说,实践才是检验真理的关键,实践才是掌握知识 ...

  5. UCOS2系统内核讲述(三)_TCB任务控制块

    Ⅰ.写在前面 学习本文之前可以参看我前面的文章: UCOS2_STM32F1移植详细过程(汇总文章) UCOS2系统内核讲述(一)_总体描述 UCOS2系统内核讲述(二)_初始化调用函数 上一篇文章讲 ...

  6. dosbox+masm5.0编译汇编文件

    在去年写过如何bc3.1编译ucos,不过现在很少去用到,但是那是用dosbox也是懵懵懂懂的,参见https://blog.csdn.net/liming0931/article/details/8 ...

  7. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

  8. ucos实时操作系统学习笔记——任务间通信(信号量)

    ucos实时操作系统的任务间通信有好多种,本人主要学习了sem, mutex, queue, messagebox这四种.系统内核代码中,这几种任务间通信机制的实现机制相似,接下来记录一下本人对核心代 ...

  9. ucos实时操作系统学习笔记——操作系统在STM32的移植

    使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...

随机推荐

  1. React.js 小书 Lesson17 - 前端应用状态管理 —— 状态提升

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson17 转载请注明出处,保留原文链接和作者信息. 上一个评论功能的案例中,可能会有些同学会对一个 ...

  2. jqgrid 上移下移单元格

    在表格中常常需要调整表格中数据的显示顺序,我用的是jqgrid,实现原理就是将表中的行数保存到数据库中,取数据时按行进行排序 1.上移,下移按钮 <a href="javascript ...

  3. NPOI之C#下载Excel

    Java中这个类库叫POI,C#中叫NPOI,很多从Java一直到.Net平台的类库为了区别大部分都是在前面加个N,比如Hibernate和NHibernate. npoi下载地址 一.使用NPOI下 ...

  4. MySql存储引擎MyISAM和InnoDB的区别

    1.MySQL默认采用的是MyISAM. 2.MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速 ...

  5. 4、加载:Loading

    /* ---html----*/ <ion-content> <button (click)="manual()">手动关闭</button> ...

  6. Android界面编程--使用活动条(ActionBar)--实现Tab导航

    使用ActionBar结合fragment实现导航 1,调用ActionBar的setNavigationModel(ActionBar.NAVIGATION_MODE_TABS)设置使用tabs导航 ...

  7. 获取当前的日期时间的js函数,格式为“yyyy-MM-dd hh:mm:ss”

    //获取当前的日期时间函数,格式为“yyyy-MM-dd hh:mm:ss” function getNowFormatDate(date) { if (date == null) { var dat ...

  8. java项目升级spring4.3.x 、jdk1.8 、tomcat8.5遇到的坑及解决方案

    在将spring3.x 升级为4.3.x,jdk1.7 tomcat7升级到jdk1.8.tomcat8.5过程中,碰到了很多问题,也学习到了很多东西,现将这些问题分享出来,方便大家后续遇到同样问题时 ...

  9. Vector 、ArrayList、LinkedList比较

    这三者都可以随机访问,也就是支持通过索引查找数据. 都是有序(可以实现元素怎么进怎么出) Vector和ArrayList比较 相同之处 1 它们都是List 它们都继承于AbstractList,并 ...

  10. 一个基于Ionic3.x cordova的移动APP demo

    项目地址如遇网络不佳,请移步国内镜像加速节点 前端技术: Angular4.x + ionic3.x + cordova 项目运行: git clone git@github.com:EasyTuan ...