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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android Studio中Intel HAXM的那些坑「建议收藏」

    Android Studio中Intel HAXM的那些坑「建议收藏」最近用过两台电脑折腾AndroidStudio,都是windows的系统,不知道为什么连着踩了两个坑。第一台我结束了qemu-system-i386.exe这个倒霉的进程导致我开启模拟器的时候一直提示我没有安装IntelHAXM,没办法咯,只好再安装一遍,然后奇葩的事情就发生了,出现了以下问题。Excuseme?我CPU虚拟化是开启的呀。这是什么鬼?安装了一次,不…

  • 程序员需要学数电吗(手机费电快有什么方法)

    目录????0.前言:????1.常见进制介绍:????(1)十进制:①示例:②可知一个任意多位的十进制数D均可展开为如下形式:③拓展——若以N取代式中的10,即可得到多位任意进制(N进制)数展开式的普遍形式:????(2)二进制:①根据N进制数展开的普遍形式可得任意一个二进制数均可展开为:![在这里插入图片描述](https://img-blog.csdnimg.cn/b7a289fac3d54c6f8ef071849945ca92.png)②并可利用上式计算出任一二进制数所表达的十进制数的大小:???

  • 架构 Roadmap 笔记分享 (2015 年)

    架构 Roadmap 笔记分享 (2015 年)

    2021年11月24日
  • mac下docker从容器内部访问宿主机ip[通俗易懂]

    mac下docker从容器内部访问宿主机ip[通俗易懂]有两种情况:1、有网络的情况下:通过ifconfig中找到自己的电脑ip然后直接访问即可2、没有网络的情况下:通过ifconfig是找不到ip的,然后需要找到一个宿主机的ip可以通过域名来访问:docker.for.mac.host.internal可以ping或者用telnetipport来测试一下…

  • 操作系统维护相关总结「建议收藏」

    操作系统维护相关总结「建议收藏」操作系统维护相关总结声明:引用请注明出处http://blog.csdn.net/lg1259156776/说明:由于前段时间遭受了电脑固态硬盘故障系统崩溃,数据未及时备份无法读取而导致的痛苦,这里

  • 倒排索引

    倒排索引

    2021年10月23日

发表回复

您的电子邮箱地址不会被公开。

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