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. 【转】Linux I2C设备驱动编写(二)

    原文网址:http://www.cnblogs.com/biglucky/p/4059582.html 在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter.i2c_drive ...

  2. 【3】JAVA---地址App小软件(AddPanel.class)(表现层)

    添加地址信息界面. 年龄和地址必须是数字,否则会弹出窗口提示. 地址信息不能为空. /* * AddPanel.java * * Created on __DATE__, __TIME__ */ pa ...

  3. HDOJ 1010

    深度搜索,注意要剪枝 1.奇偶剪枝 可以把map看成这样: 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 从为 0 的格子走一 ...

  4. Flask+Mysql搭建网站之网页设计

    不得不说,本人极度讨厌网页设计,感觉太麻烦了.不过整好啦还蛮有成就感的. 关于网页设计,现在流行的是扁平化设计. http://www.bootcss.com/ http://www.bootcss. ...

  5. js获取当前页面的url中id

    function UrlSearch() { var name, value; var str = location.href; //获取到整个地址 var num = str.indexOf(&qu ...

  6. Vagrant 部署python开发环境

    Vagrant简介 Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境.它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境. 在Windows下 ...

  7. java cmd常用命令

    熟悉Java的常用命令 面试例题11:使用jar命令. 请使用jar命令,将test文件夹压缩成.jar文件,并简述其压缩包的结构. 考点:对于Java程序员来说,更多情况下是使用集成Java开发工具 ...

  8. uva 12253 - Simple Encryption(dfs)

    题目链接:uva 12253 - Simple Encryption 题目大意:给定K1.求一个12位的K2,使得KK21=K2%1012 解题思路:按位枚举,不且借用用高速幂取模推断结果. #inc ...

  9. 通过yum升级CentOS/RHEL最小化安装

    1.如果你有安装CentOS / RHEL最小服务器安装,您可能有很多麻烦没有安装包 2.有一种方法来安装所有的包,需要一个基本的服务器,使用yum groupinstall命令 3.从最小的安装基本 ...

  10. python安装MySQLdb(Windows环境)

    1.下载 http://www.codegood.com/downloads 我的win7 64位.Python2.7.8版本,所以选择MySQL-python-1.2.3.win-amd64-py2 ...