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. Subway POJ 2502

    题目链接: http://poj.org/problem?id=2502 题目大意: 你刚从一个安静的小镇搬到一个吵闹的大城市,所以你不能再骑自行车去上学了,只能乘坐地铁或者步行去上学.因为你不想迟到 ...

  2. delphi 句柄

    句柄Handle顾名思义就是把柄,把手的意思 ,得到了某对象的句柄可以任意控制此对象 .句柄是一种指向指针的指针.不是每个组件都有句柄,只有窗口控件等(*.模块(module)*.任务(task)*. ...

  3. Delphi实现AnsiString与WideString的转换函数 转

    Delphi实现AnsiString与WideString的转换函数 分类: Delphi2013-01-26 16:23 460人阅读 评论(0) 收藏 举报 [delphi] view plain ...

  4. Java中Websocket使用实例解读

    介绍 现在很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器 ...

  5. JVM之--Java内存结构(第一篇)

    最近在和同事朋友聊天的时候,发现一个很让人思考的问题,很多人总觉得JVM将java和操作系统隔离开来,导致很多人不用熟悉操作系统,甚至不用了解JVM本身即可完全掌握Java这一门技术,其实个人的观点是 ...

  6. foreach as 和 in_array

    1.$arr = array("one", "two", "three"); foreach ($arr as $value) { echo ...

  7. hdu 4499 Cannon(暴力)

    题目链接:hdu 4499 Cannon 题目大意:给出一个n*m的棋盘,上面已经存在了k个棋子,给出棋子的位置,然后求能够在这种棋盘上放多少个炮,要求后放置上去的炮相互之间不能攻击. 解题思路:枚举 ...

  8. CSS3之渐变Gradient

    渐变是CSS3中比较好玩的属性,学会了渐变,那么可以做出非常炫的东东哟.CSS3 中渐变——Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变). ...

  9. 日积月累:ProguardGui进行jar包代码混淆

    前面文章<Proguard进行源代码混淆>讲解过怎么使用Proguard工具对Android的源代码进行混淆的方法(感兴趣的朋友可以访问:http://blog.csdn.net/p106 ...

  10. 外键约束列并没有导致大量建筑指数library cache pin/library cache lock

    外键约束列并没有导致大量建筑指数library cache pin/library cache lock 清除一个100大数据表超过一百万线,发现已经运行了几个小时: delete B001.T_B1 ...