usoc学习-task2

这个函数主要演示了task的删除,以及优先级的切换。

可以看到优先级高的task1先运行。优先级切换后,task2的优先级高了,运行顺序反了。

然后task1发起task2的删除。task2调用了删除函数后,会马上停止。task剩余的代码也得不到执行。

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "includes.h"

void task1(void *pdata);
#define TASK1_PRIO                  10
#define TASK1_STK_SIZE 64

void task2(void *pdata);
#define TASK2_PRIO                  11
#define TASK2_STK_SIZE 64

OS_STK TASK1[TASK1_STK_SIZE];
OS_STK TASK2[TASK2_STK_SIZE];

int main(void)
{
    delay_init(168);          //³õʼ»¯ÑÓʱº¯Êý
    LED_Init();                //³õʼ»¯LED¶Ë¿Ú
    uart_init(115200);
    OSInit();
    OSTaskCreate(task1,(void *)0,(OS_STK *)&TASK1[TASK1_STK_SIZE-1],TASK1_PRIO);
    OSTaskCreate(task2,(void *)0,(OS_STK *)&TASK2[TASK2_STK_SIZE-1],TASK2_PRIO);
    delay_ms(10000);
    printf("os start\r\n");
    OSStart();

    //OSTaskChangePrio(11,9);
}

void task1(void *pdata)
{ OS_CPU_SR cpu_sr=0;
    int a=0;
    while(1)
    {
        printf("task1,a is %d\r\n",a);
        delay_ms(300);
         a++;
        if(a==5)
        {
            OSTaskChangePrio(10,12);
            printf("change prio,now task2 comes first\r\n");
        }
        if(a==10)
        {
            while(OSTaskDelReq(11)!= OS_ERR_TASK_NOT_EXIST) \\等待task2被删除,直到他不存在
            {delay_ms(1);
            }

        }

    }
}

void task2(void *pdata)
{ OS_CPU_SR cpu_sr=0;
    int b=0;
    while(1)
    {
        printf("task2, b is %d\r\n",b);
        delay_ms(300);
        b++;
    if(OSTaskDelReq(OS_PRIO_SELF)==OS_ERR_TASK_DEL_REQ)
        {
            OSTaskDel(OS_PRIO_SELF);
            printf("task2 is deleted\r\n");
        }

    }
}
时间: 2024-12-20 23:43:14

usoc学习-task2的相关文章

【深度学习】吴恩达网易公开课练习(class2 week1 task2 task3)

正则化 定义:正则化就是在计算损失函数时,在损失函数后添加权重相关的正则项. 作用:减少过拟合现象 正则化有多种,有L1范式,L2范式等.一种常用的正则化公式 \[J_{regularized} = \small \underbrace{-\frac{1}{m} \sum\limits_{i = 1}^{m} \large{(}\small y^{(i)}\log\left(a^{[L](i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right)

学习笔记-RTOS任务创建

任务的创建 1  任务需要 RAM 来保存与任务有关的状态信息(任务控制块) 2  需要一定的 RAM 来作为任务堆栈 xTaskCreate()就会从FreeRTOS的堆中分配,必须提供内存管理文件 默认使用heap_4.c 3 宏 configSUPPORT_DYNAMIC_ALLOCATION 必须为 1 4 函数 xTaskCreateStatic()创建的话这些 RAM 就需要用户来提供了 configSUPPORT_STATIC_ALLOCATION设置为1 5 任务调度器启动前还是

Gradle学习(一)

安装 Gradle需要jdk1.5以上的安装环境,Gradle装配了自己的Groovy库,所以无需安装Groovy,配置GRADLE_HOME以及PATH gradle -v 测试安装成功与否 Project与Task 每一个Gradle的配置都是由一个或多个Project组成,Project的含义取决于你用Gradle来做什么,一个Project可能代表一个Jar library 或者一个web应用或者一个zip压缩包,一个Project并不一定代表一个即将被构建的项目, 也可能代表一个已经被

java学习(四)代码的设计

一.目的 1.为了使程序员编写的代码更加的简洁,使人阅读起来更加流畅 2.将运算代码与界面代码完全分离开来,利于团队开发,提高团队之间的工作效率 3. 在很短的时间内可以替换整个站点的外观: 4.使程序员可以抽象编程,而无须接触HTML代码: 5.可以重复利用以前的模板. 二.示例 引用前一篇的记忆曲线的JSP文件 1.未进行分离的代码 1 <%@ page language="java" contentType="text/html; charset=UTF-8&qu

uC/OS-III学习2::uC/OS-III LED闪烁实验

1 前言: 看完了uC/OS-III的基本介绍之后,大致对这个操作系统有了点了解,但真正的理解还是要通过不断的去使用,在使用中体验uC/OS-III的乐趣和更深的理解其工作原理是非常重要的.因此,我在STM32上面移植好uC/OS-III后,就開始了自己的简单实验学习,至于怎么移植,书上还有网上有非常多參考资料,当然你也能够下载别人移植好的干净的项目project直接用也能够.本文主要介绍一下怎么利用uC/OS-III来控制STM32开发板上面的LED闪烁任务. 2 硬件部分: 这里并不为某个开

【转载】Gradle学习 第六章:构建脚本基础

转载地址:http://ask.android-studio.org/?/article/11 6.1. Projects and tasks 项目和任务Everything in Gradle sits on top of two basic concepts: projects and tasks.<翻译> Gradle中的所有东西都是围绕两个基本概念:项目和任务. Every Gradle build is made up of one or more projects. What a

[ansible-playbook]4 持续集成环境之分布式部署利器 ansible play学习

3 ansible-play讲的中太少了,今天稍微深入学习一点 预计阅读时间:15分钟 一: 安装部署 参考 http://getansible.com/begin/an_zhuang_ansile 二:常用模块 a. service 用于启动检查服务 b. file 用于文件删除 链接 创建 c.shell 用于执行脚本(不推荐,因为shell操作有时并非幂等,而且不方便检查执行结果) d.copy 用于拷贝文件 e. vars+ template 用于根据模板文件基于变量创建配置文件 样例:

JavaScript闭包学习笔记(ife2015spring)

阮大的文章让我获益良多.学习Javascript闭包(Closure) 问题: 话说在做task2小练习4轮播图的时候遇到了一个问题.本来是想按哪个按钮,就播放到对应图片.但实际上最后出来的值都是5. 比如下面这个简化的例子. for(var i=1;i<5;i++){ e[i].onclick=function(){ console.log(i); }; } 本以为按第一个弹出一,按第二个弹出2.但实际上都弹出的是5.黑人问号脸? 这就是js坑的地方了.因为for循环结束以后,它的i并没有马上

Java学习(三)JSP学习1

一.  理解JSP技术 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp). 用JSP开发的Web应用是跨平台的,既能在L