ucosii操作系统详解_curdate函数

ucosii操作系统详解_curdate函数UCOSII的用法OSTaskCreate()函数原型:INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8Uprio)调用者:任务或者是初始化代码。作用:建立一个新任务,任务的建立可以在多个任务环境启动之前,也可以在正在运行的任务中建立,中断处理程序中不能建立任务,一个任务必须为无限循环结构,且不能有…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 UCOSII的用法

OSTaskCreate()
函数原型:INT8U OSTaskCreate(void(*task)(void *pd),void *pdata,OS_STK *ptos,INT8U prio)
调用者:任务或者是初始化代码。
作用:建立一个新任务,任务的建立可以在多个任务环境启动之前,也可以在正在运行的任务中建立,中断处理程序中不能建立任务,一个任务必须为无限循环结构,且不能有返回点。无论用户程序中是否产生中断,在初始化任务堆栈时,堆栈的结构必须与处理器中断后寄存器入栈的顺序结构相同。

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

返回值:
OSTaskCreate()的返回值为下述之一:
# OS_NO_ERR: 函数调用成功。
# OS_PRIO_EXIST:具有该优先级的任务已经存在。
# OS_PRIO_INVALID: 参数指定的优先级大于OS_LOWEST_PRIO
# OS_NO_MORE_TCB: 系统中没有OS_TCB可以分配给任务了。

注意:
1 任何堆栈必须声明为OS_STK类型。
2 在任务中必须调用uCOS提供的下述过程之一:延时等待,任务挂起,等待事件发生(等待信号量,消息邮箱,消息队列),以便其他任务能得到cpu。
3 程序中不能使用优先级0,1,2,3,以及OS_LOWEST_PRIO-3,OS_LOWEST_PRIO-2,OS_LOWEST_PRIO-1,

OS_LOWEST_PRIO,这些优先级系统保留,其余的56个优先级提供给应用程序。

范例:
本例中,传递给任务Task1()的参数pdata不使用,所以指针pdata被设为NULLL,注意到程序中设定堆栈向低地址增长,传递的栈顶指针为高地址&Task1[1023],如果在你的程序中设定堆栈向高地址增长,则传递的栈顶指针应该为&Task1Stk[0]。
OS_STK Task1Stk[1024];
void main(void)
{

NT8U err;
   …
OSInit();//初始化uCOS-II
….
OSTaskCreate(Task1,(void *)0,&Task1Stk[1023],25);

OSStart();//启动多任务环境
}

void Task1(void *pdata)
{

pdata=pdata;
for(;;)
{

……   //任务代码
}

}

 

实例:

OSTaskCreate((void*)Rs485_Task,(void *)0,(void *)&TaskStk[RS485_Prio][TASK_STK_SIZE-1], RS485_Prio);

其中TASK_STK_SIZE=2048

void Rs485_Task()
{

 do
        {

            printd(“Task 485.\r\n”);

            RS485_PreProcess();

            OSTimeDly(100);
        }  while(1);

}

 

 

 UCOSIII的用法

ucosii操作系统详解_curdate函数

 

转载于:https://www.cnblogs.com/gddy/p/10875293.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197216.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GloVe模型_nerlove模型

    GloVe模型_nerlove模型系列目录(系列更新中)第二讲cs224n系列之word2vec&词向量word2vec进阶之skim-gram和CBOW模型(HierarchicalSoftmax、NegativeSampling)第三讲cs224n系列之skip-pram优化&GlobalVectorbyManning&

    2025年11月24日
    3
  • Linux内核的整体架构

    Linux内核的整体架构1.前言本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。注:本文和其它的“Linux内核分析”文章都基于如下约定:  a)内核版本为Linux3.10.29(该版本是一个longterm的版本,会被Linux社区持续维

    2022年7月23日
    12
  • 只需 5 分钟,手把手教会你在 Docker 和 Kubernetes 中进行应用发布!

    只需 5 分钟,手把手教会你在 Docker 和 Kubernetes 中进行应用发布!公众号关注 奇妙的 Linux 世界 设为 星标 每天带你玩转 Linux 看完本文希望读者能够了解到 Docker 的基本原理 Kubernetes 是怎么工作的 对于前端 K

    2025年8月21日
    2
  • Python中不尽如人意的断言Assertion

    Python中不尽如人意的断言Assertion

    2022年2月21日
    42
  • jsonify返回中文乱码的问题

    jsonify返回中文乱码的问题参考博客:解决flask中文乱码的问题返回内容如图:实际填写的内容:从网上找答案,结果很多都是说配置app.config,如下:app.config[‘JSON_AS_ASCII’]但我试了之后,还是不可能正常显示汉字,最终还是通过配置app.config解决,只是增加了一这一项:参考博客:PythonWEB框架之Flask…

    2022年5月16日
    43
  • ice最新服务器号码,我的世界手机版ice服务器号是什么 ice服务器被炸另有隐情…

    ice最新服务器号码,我的世界手机版ice服务器号是什么 ice服务器被炸另有隐情…近日,一个名为ICE的《我的世界》服务器被其他玩家恶意毁坏了,里面的建筑变得残破不堪,而服务器的存档也仅仅只有数天前的。要知道,这些建筑是很多玩家用大量的时间制造,想要复原不是那么简单。当玩家们还在寻找炸ICE服务器的凶手时,3月25号下午《我的世界》手机论坛中就有一个玩家发了帖子,说服务器是它炸的,它是《迷你世界》的玩家。这个帖子发出去后,在短时间内评论了达到了上千个,也没有版主去管他,就这样这…

    2022年4月27日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号