1.OSInit()函数:建立两个任务,一个是空闲任务,在任何任务没有就绪时运行,一个是统计任务,计算cpu的利用率。初始化 UCOSII 的所有变量和数据结构,
2.OSTaskCreate

该函数返回一个8位的整形数,调用该函数需要四个参数:
a 第一个参数:task是一个指向任务代码的指针,也就是用户代码的首地址,平常使用中我们把自己创建的任务的名字作为这个参数即可。
b 第二个参数:pdata指向一个数据结构,该结构用来在建立任务时向任务传递参数。
c 第三个参数:ptos是指向任务堆栈栈顶的指针,一般把创建的任务的堆栈数组首地址赋给它。
任务堆栈用来保存局部变量,函数参数,返回地址以及任务被中断时处理器寄存器的内容,任务堆栈的大小决定于任务的需要以及预计的中断嵌套层数。计算堆栈的大小需要知道任务的局部变量所占的空间,可能产生嵌套调用的函数,及中断嵌套所需的空间,如果初始化常量OS_STK_GROWTH设为1,堆栈被设为从内存高地址向低地址增长,此时ptos应该指向任务堆栈空间的最高地址,反之,如果OS_STK_GROWTH设为0,堆栈将从内存的低地址向高地址增长。
d 第四个参数:prio是任务的优先级。每个任务必须有一个唯一的优先级作为标识,数字越小,优先级越高。

每个任务都有自己的堆栈空间。堆栈必须声明为OS_STK类型,并且由连续的内存空间组成。用户可以静态分配堆栈空间(在编译的时候分配)也可以动态地分配堆栈空间(在运行的时候分配)。静态堆栈声明如程序清单 L4.4和4.5所示,这两种声明应放置在函数的外面。

程序清单  L4.4 静态堆栈

static OS_STK  MyTaskStack[stack_size];

或  OS_STK  MyTaskStack[stack_size];

用户可以用C编译器提供的malloc()函数来动态地分配堆栈空间,如程序清单 L4.6所示。在动态分配中,用户要时刻注意内存碎片问题。特别是当用户反复地建立和删除任务时,内存堆中可能会出现大量的内存碎片,导致没有足够大的一块连续内存区域可用作任务堆栈,这时malloc()便无法成功地为任务分配堆栈空间。

 程序清单 L L4.6   用malloc()为任务分配堆栈空间

OS_STK  *pstk;

pstk = (OS_STK *)malloc(stack_size);

If (pstk != (OS_STK *)0) {            /* 确认malloc()能得到足够地内存空间 */

    Create the task;

}

最新文章

  1. CSS 定位
  2. SoapUI接口测试·第一个HTTP Request接口请求和断言
  3. 矩阵卷积Matlab(转载)
  4. Swift编程语言的相关资料
  5. 基于ECharts 的地图例子
  6. Authorized users only. All activity may be monitored and reported.
  7. ORACLE Recyclebin管理及flashback recyclebin中的对象
  8. 设计模式(六)桥连模式Bridge(结构型)
  9. 构建一个真实的应用电子商务SportsStore(十一)
  10. Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)
  11. sql优化使用技巧
  12. 谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?
  13. prometheus 通过企业微信接收告警
  14. 【LOJ】#2508. 「AHOI / HNOI2018」游戏
  15. React Hooks新特性学习随笔
  16. Spring Boot 启动 Struts 报冲突
  17. Centos中查看系统信息的常用命令
  18. Oracle SQL_TRACE使用小结
  19. 解决公司的垃圾wifi dhcp获取不到ip 以及配上ip也不能联网的原因
  20. 树形DP求各点能走到的最远距离

热门文章

  1. 【BZOJ】1975: [Sdoi2010]魔法猪学院
  2. Oracle数据库合并行记录,WMSYS.WM_CONCAT 函數的用法
  3. PHP如何关闭notice级别的错误提示
  4. c#语句 for循环嵌套
  5. Canvas 属性,方法
  6. paramter的添加
  7. Mysql 性能调优之Memory 计算
  8. mysql view(视图)
  9. flume+elasticsearch
  10. # 20145334赵文豪 《Java程序设计》第5周学习总结