当前位置: 首页 > ds >正文

一起学UCOS(三)、创建任务

标签(空格分隔): 一起学UCOS


##一、简介 任务是uCOSII的最小运行单元。在操作系统初始化OSInit执行之后,用户可以调用OSTaskCreate或OSTaskCreateExt来创建用户任务。因为这两个函数是内核用于创建任务的,不允许用户进行修改,因此被成为系统服务。

##二、OSTaskCreate() ###1.函数原型

    INT8U OSTaskCreate (void (*task)(void *pd),    //任务函数指针void *pdata,               //传给任务参数的指针OS_STK *ptos,             //任务堆栈栈顶指针INT8U prio)               //任务优先级返回值:OS_ERR_NONE             成功返回值OS_PRIO_EXIT            任务优先级已存在OS_ERR_PRIO_INVALID     任务优先级比OS_LOWEST_PRIO的值大 OS_ERR_TASK_CREATE_ISR  在中断中创建任务

##三、OSTaskCreateExt() ###1.函数原型 INT8U 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_OPT_STK_CHK,OS_TASK_OPT_STK_CLR,OS_TASK_OPT_SAVE_FP)

返回值:OS_ERR_NONE             成功返回值OS_PRIO_EXIT            任务优先级已存在OS_ERR_PRIO_INVALID     任务优先级比OS_LOWEST_PRIO的值大 OS_ERR_TASK_CREATE_ISR  在中断中创建任务

##四、例子

<!-- lang: cpp -->
#include "includes.h"#define TASK1_PRO     1
#define TASK2_PRO     2
#define TASK3_PRO     3OS_STK        Task1Stk[TASK_STK_SIZE];
OS_STK        Task2Stk[TASK_STK_SIZE];
OS_STK        Task3Stk[TASK_STK_SIZE];static void Task1(void *p_arg);
static void Task2(void *p_arg);
static void Task3(void *p_arg);void TaskCreate(void)
{
OSTaskCreate(Task1,NULL,&Task1Stk,TASK1_PRO);
OSTaskCreate(Task2, NULL, &Task2Stk, TASK2_PRO);
OSTaskCreateExt(Task3, NULL, &Task3Stk, TASK3_PRO, TASK3_PRO, &Task3Stk[TASK_STK_SIZE - 1], TASK_STK_SIZE, NULL, 0);
}static void Task1(void *p_arg)
{
p_arg = p_arg;while (1)
{printf("Task1 is running!\n");OSTimeDlyHMSM(0,0,2,0);}
}static void Task2(void *p_arg)
{
p_arg = p_arg;while (1)
{printf("Task2 is running!\n");OSTimeDlyHMSM(0, 0, 1, 0);
}
}static void Task3(void *p_arg)
{
p_arg = p_arg;while (1)
{printf("Task3 is running!\n");OSTimeDlyHMSM(0, 0, 0, 500);
}
}

##五、总结 使用uCOSII,创建任务是第一步。在实际应用中,要根据任务的实际情况,合理的分配堆栈大小以及优先级。

转载于:https://my.oschina.net/undersky/blog/394877

http://www.xdnf.cn/news/11376.html

相关文章:

  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • QingBlog|轻博客 一个轻量级的Web版个人博客产品
  • 滤波器设计软件--filter solutions的使用
  • 数字信号处理实验二:时域采样与频域采样
  • 用VB操作Excel(VB6.0)(整理)
  • hao123电脑版主页_软件 | 流氓软件网站植入主页一览
  • 八数码与十五数码问题
  • Zencart网站搭建与配置教程
  • Http Header里的Content-Type
  • IE8的urlmon.dll总是崩溃的问题
  • H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析
  • Grub命令使用详解[教程]
  • 25届华为机考笔试考的啥?如何通过机试|附全岗位真题库通关攻略
  • session.invalidate()无效的原因
  • adb server is out of date. killing完美解决
  • android应用跳文件管理,10款优秀Android文件管理器应用
  • java 访问cxf_java cxf 发布和访问
  • Apache的防盗链配置及详解
  • CVE-2010-3654分析及利用
  • 110个常用的jquery特效和插件
  • 监控摄像头参数详细介绍
  • 浅谈光耦的作用和工作原理
  • 机械制图手册_机械制图基本知识大全!
  • 微信小程序checkbox的排列方向
  • glPushMatrix/glPopMatrix简介及示例(在不同位置绘制图形)
  • 简单邮件传输协议(SMTP)
  • 【apache-tomcat安装配置】完整教程(保姆级)
  • MapX学习基本教程
  • 内存错误的原因和解决方法
  • Linux命令集(Linux文件管理命令--rm指令篇)