OSTaskCreateExt()建立任务

NT8U OSTaskCreateExt (void   (*task)(void *pd),

void    *pdata,

OS_STK *ptos,

INT8U    prio,

INT16U   id,

OS_STK *pbos,

INT32U   stk_size,

void    *pext,

INT16U   opt)

所属文件:OS_TASK.C 调用者:任务或者是启动代码,但是不可以在中断中调用。
此函数建立一个新文件,是OSTaskCreate()的升级版。
参数:
task 指向任务代码的指针。
pdata 指向一个类型可以选择的数据区,很多时候是(void *)0.
ptos   指向任务堆栈栈顶的指针。任务堆栈用于保存局部变量、函数参数、返回地址及中断时cpu寄存器的状态。如果初始化常量OS_STK_GROWTH设为1(在os_cpu.h中定义),将堆栈设为Stack grows from HIGH to LOW memory on ARM ,此时ptos应该指向任务堆栈空间的最高地址。
prio 任务的优先级。数字越小,优先级越高。
id    任务的标识,可以设置同优先级。
pbos 指向堆栈低端的指针。
stk_size 指定任务堆栈的大小。
pext 定义数据结构的指针,很多时候是(void *)0.
opt    存放与任务相关的操作信息。如OS_TASK_OPT_CHK 允许进行任务堆栈检查等。可以参考uCOS_H.H
范例:本例中创立的任务将运行在堆栈向高地址递增的处理器上,如MCS-51,此时,OS_STK_GROWTH设为0;本例中,允许堆栈检查操作,程序可以调用OSTaskStkChk()函数。

OS_STK *TaskStk[1024];
void main(void)
{
     INT8U err;
     OSInit();
    
     err = OSTaskCreateExt(Task,
              (void *) 0,
              &TaskStk[0],
                10,
                10,
               &TaskStk[1023],
                1024,
               (void *) 0,
                 OS_TASK_OPT_CHK;)
    
     OSStart();
}
void Task(void *pdata)
{
       pdata = pdata;
      for(;;){
    ……
      }
}

关于堆栈的递增和递减问题,会影响到代码的可移植性,可以这样书写,以适应不同的处理器:

OS_STK *TaskStack[TASK_STACK_SIZE];
#if OS_STK_GROWTH == 0
     OSTaskCreate(task,pdata,&TaskStack[0],prio);
#else
     OSTaskCreate(task,pdata,&TaskStack[TASK_STACK_SIZE-1],prio);
#endif

OSTaskCreateExt() 建立任务的更多相关文章

  1. uC/OS II 函数说明 之–OSTaskCreate()与OSTaskCreateExt()

    1. OSTaskCreate()    OSTaskCreate()建立一个新任务,能够在多任务环境启动之前,或者执行任务中建立任务.注意,ISR中禁止建立任务,一个任务必须为无限循环结构.    ...

  2. [原] 利用 OVS 建立 VxLAN 虚拟网络实验

    OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...

  3. Atitit.如何建立研发体系

    Atitit.如何建立研发体系 组织,流程,prj..Mana  oppm 发管理是一个完整的管理体系,从结构上来讲,它主要由四个方面的内容构架而成:组织结构与岗位设置 管理流程与工作流程..项目及管 ...

  4. 在 Linux 上使用 Jexus + Mono 建立 Asp.Net 网站.

    godaddy 买了个net空间,一点也不好用. 几个G的数据, 上传数据只有几kb , 想用 ssh 登录上去用 wget 下载,也不行 windows的主机貌似没有 ssh 功能... 后来实在忍 ...

  5. ASP.NET Core管道深度剖析(4):管道是如何建立起来的?

    在<管道是如何处理HTTP请求的?>中,我们对ASP.NET Core的请求处理管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.这样一 ...

  6. 读书笔记--SQL必知必会--建立练习环境

    书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...

  7. 【转】SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误

    SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误 最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS ...

  8. 黑马程序员——ARC机制总结和用ARC建立模型

    ARC 全称:Automatic Reference Counting 使用ARC 只需要在建立一个新的项目的时候把 下面的√打上 Xcode5以后都会默认建议开发者使用ARC机制 新的项目中如果有部 ...

  9. gRPC源码分析2-Server的建立

    gRPC中,Server.Client共享的Class不是很多,所以我们可以单独的分别讲解Server和Client的源码. 通过第一篇,我们知道对于gRPC来说,建立Server是非常简单的,还记得 ...

随机推荐

  1. 【转】(DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device

    原文网址:http://www.cnblogs.com/biglucky/p/4057495.html Linux kernel 是怎么将 devicetree中的内容生成plateform_devi ...

  2. 基于Minifilter框架的文件过滤驱动理解

    概述 Minifilter即File System Minifilter Drivers,是Windows为了简化第三方开发人员开发文件过滤驱动而提供的一套框架,这个框架依赖于一个称之为Filter ...

  3. F - True Liars - poj1417(背包+并查集)

    题意:有这么一群人,一群好人,和一群坏人,好人永远会说实话,坏人永远说假话,现在给你一组对话和好人与坏人的数目P1, P2. 数据里面的no是A说B是坏人, yes代表A说B是好人,就是这样,问题能不 ...

  4. UVALive 4957 Fake scoreboard

    题意就是有n个队伍和m个题目 给出了每个队伍解决的题目数量 每个题目也给出了被解决的次数 然后求一个方阵. N,Y表示每个队伍是否过了哪个题目. 要求字典序最小. 这题给人的第一反应就是网络流. 虽然 ...

  5. Confluence简介

    前言     我们有很多的知识共享的工具,比如我们每天都用的qq共享,网盘共享,但是都不如我们这个来的方便,直接.这个是直接通过网页的形式进行共享,类似于我们的博客共享,但是它更加的具有指向性,站点管 ...

  6. Object -C self -- 笔记

    - 是实例方法,是用实例对象进行调用的:+ 是类方法,又称静态方法,是用类来调用的: @interface Person: NSObject { int _age; } - (void) setAge ...

  7. Machine Learning—Mixtures of Gaussians and the EM algorithm

    印象笔记同步分享:Machine Learning-Mixtures of Gaussians and the EM algorithm

  8. Java基础知识强化21:Java中length、length()、size()区别

    1.java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.2.java中的length()方法是针对字符串String说的,如果想看这个 ...

  9. 大数据笔记06:大数据之Hadoop的HDFS(文件的读写操作)

    1. 首先我们看一看文件读取: (1)客户端(java程序.命令行等等)向NameNode发送文件读取请求,请求中包含文件名和文件路径,让NameNode查询元数据. (2)接着,NameNode返回 ...

  10. 关于坑爹的PopupWindow的“阻塞”争议问题:Android没有真正的“阻塞式”对话框

    请先允许我对网上某些没经过亲自实践人云亦云的同志呵呵... 那么开始正文,首先"阻塞"这个词本身就存在理解上的差异! 一般我们理解的阻塞,是阻塞了某个线程,即代码执行到这里后等待这 ...