(一)先创建一个启动任务来进行创建其它任务,创建任务的宏定义

#define START_TASK_PRIO        3            //任务优先级
#define START_STK_SIZE 128 //任务堆栈大小
OS_TCB StartTaskTCB; //任务控制块
CPU_STK START_TASK_STK[START_STK_SIZE]; //任务堆栈
void start_task(void *p_arg); //任务函数

(一)  创建main函数,用于创建启动任务

int main(void)
{
OS_ERR err; /*初始化时候错误保存*/
CPU_SR_ALLOC(); /*声明变量,这个是进入临界区那个代码用到*/ /*硬件相关初始化*/
delay_init(); //时钟初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断分组配置
uart_init(); //串口初始化 OSInit(&err); //初始化UCOSIII
OS_CRITICAL_ENTER(); //进入临界区
//创建开始任务
OSTaskCreate((OS_TCB * )&StartTaskTCB, //任务控制块
(CPU_CHAR * )"start task", //任务名字
(OS_TASK_PTR )start_task, //任务函数
(void * ), //传递给任务函数的参数
(OS_PRIO )START_TASK_PRIO, //任务优先级
(CPU_STK * )&START_TASK_STK[], //任务堆栈基地址
(CPU_STK_SIZE)START_STK_SIZE/, //任务堆栈深度限位
(CPU_STK_SIZE)START_STK_SIZE, //任务堆栈大小
(OS_MSG_QTY ), //内部消息队列能够接收最大消息数目,为0时禁止接收
(OS_TICK ), //当使能时间片轮转时的时间片长度,为0时为默认 (void * )0, //用户补充的存储区
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项
(OS_ERR * )&err); //存放该函数错误时的返回值
OS_CRITICAL_EXIT(); //退出临界区
OSStart(&err); //开启UCOSIII
}

(一)  创建任务一宏定义

注意:在没有开启时间轮转调度时候优先级不要相同

#define TASK1_TASK_PRIO        4            //任务优先级
#define TASK1_STK_SIZE 128 //任务堆栈大小
OS_TCB Task1_TaskTCB; //任务控制块
CPU_STK TASK1_TASK_STK[TASK1_STK_SIZE]; //任务堆栈
void task1_task(void *p_arg); //任务函数

(一)  在启动任务函数中创建任务一

//开始任务任务函数
void start_task(void *p_arg)
{
OS_ERR err;
CPU_SR_ALLOC();
p_arg = p_arg;
CPU_Init();
#if OS_CFG_STAT_TASK_EN > 0u
OSStatTaskCPUUsageInit(&err); //统计任务
#endif #ifdef CPU_CFG_INT_DIS_MEAS_EN //如果使能了测量中断关闭时间
CPU_IntDisMeasMaxCurReset();
#endif #if OS_CFG_SCHED_ROUND_ROBIN_EN //当使用时间片轮转的时候
//使能时间片轮转调度功能,时间片长度为1个系统时钟节拍,既1*5=5ms
OSSchedRoundRobinCfg(DEF_ENABLED,,&err);
#endif OS_CRITICAL_ENTER(); //进入临界区
//创建TASK1任务
OSTaskCreate((OS_TCB * )&Task1_TaskTCB,
(CPU_CHAR * )"Task1 task",
(OS_TASK_PTR )task1_task,
(void * ),
(OS_PRIO )TASK1_TASK_PRIO,
(CPU_STK * )&TASK1_TASK_STK[],
(CPU_STK_SIZE)TASK1_STK_SIZE/,
(CPU_STK_SIZE)TASK1_STK_SIZE,
(OS_MSG_QTY ),
(OS_TICK ),
(void * ),
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR * )&err); //创建任务二执行第三点然后复制上面创建任务一的函数,修改红色字体部分。
OS_CRITICAL_EXIT(); //退出临界区
OSTaskDel((OS_TCB*),&err); //删除start_task任务自身
}

(一)  创建任务一的任务函数

//task1任务函数
void task1_task(void *p_arg)
{
u8 task1_num=;
OS_ERR err;
CPU_SR_ALLOC();
p_arg = p_arg; /*初始化硬件相关进入临界区*/
OS_CRITICAL_ENTER();
//硬件相关初始化在这里
OS_CRITICAL_EXIT();
while()
{
task1_num++; //任务执1行次数加1 注意task1_num1加到255的时候会清零!!
printf("任务1已经执行:%d次\r\n",task1_num);
if(task1_num==)
{
OSTaskDel((OS_TCB*)&Task2_TaskTCB,&err); //任务1执行5此后删除掉任务2
printf("任务1删除了任务2!\r\n");
}
/*时,分,秒,毫秒*/
OSTimeDlyHMSM(,,,,OS_OPT_TIME_HMSM_STRICT,&err); //延时1s }
}

(六)添加任务按点三四五点添加,上面程序不完整,只是示例,具体看历程创建任务与删除

002_UCOSIII任务创建于删除的更多相关文章

  1. linux命令 - ln - 创建和删除软、硬链接

    linux命令 - ln - 创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件 ...

  2. 各种隐藏 WebShell、创建、删除畸形目录、特殊文件名、黑帽SEO作弊(转自核大大)

    其实这个问题,经常有朋友问我,我也都帮大家解决了…… 但是现在这些现象越来越严重,而且手法毒辣.隐蔽.变态,清除了又来了,删掉了又恢复了,最后直接找不到文件了,但是访问网站还在,急的各大管理员.站长抓 ...

  3. DOM创建和删除节点、HTML DOM常用对象[转]

    创建和删除节点:——核心DOM   1. 创建单个元素节点:3步:      1. 创建空元素节点对象:         var elem=document.createElement("标 ...

  4. MySQL索引的创建、删除和查看

    MySQL索引的创建.删除和查看 此文转自http://blogold.chinaunix.net/u3/93470/showart_2001536.html 1.索引作用 在索引列上,除了上面提到的 ...

  5. linux下创建和删除软、硬链接

    linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...

  6. git创建和删除远程分支

    问题描述:           使用git创建和删除远程分支 问题解决:              (1)git创建本地分支 注:            如上所示,使用命令 git branch -a ...

  7. oracl使用DataBase Configuration Assistant创建、删除数据库

    原文:oracl使用DataBase Configuration Assistant创建.删除数据库 可以使用DataBase Configuration Assistant来创建一个心得数据库.Da ...

  8. Java文件File操作一:文件的创建和删除

    一.简述 File 文件类,主要对文件进行相关操作.常用的File操作有:文件(夹)的创建.文件(夹)的删除,文件的读入和下载(复制)等: 二.文件(夹)的创建和删除 1.创建过程 实例: //cre ...

  9. [转]C# FileSystemWatcher监控指定文件或目录的文件的创建、删除、改动、重命名等活动

    觉得这个很常用..比如一些软件.   http://www.rabbit8.cn/DoNet/407.html   FileSystemWatcher控件主要功能: 监控指定文件或目录的文件的创建.删 ...

随机推荐

  1. xv6解析-- 多处理器操作

    xv6可以运行多cpu的计算机上,这个os使用mycpu函数来标识初当前的cpu,使用struct cpu结构体来记录当前的CPU状态.使用cpus这些状态存放于cpus数组中,使用ncpu来标志cp ...

  2. 分布式服务追踪与调用链 Zikpin

    分布式服务追踪与调用链系统产生的背景 在为服务中,如果服务与服务之间的依赖关系非常复杂,如果某个服务出现了一些问题,很难追查到原因,特别是服务与服务之间调用的时候. 在微服务系统中,随着业务的发展,系 ...

  3. Linux下如何查看tomcat是否启动、查看tomcat启动日志

    在Linux系统下,重启Tomcat使用命令的操作! 1.首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh ...

  4. (二十六)JavaBean

    一.定义 1 JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法暴露给其它程序 ...

  5. kafka之基本介绍

    什么是kafka? Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理 ...

  6. IE浏览器 Table 兼容问题

    border篇: 直接在<tr>标签上添加 border-bottom:1px solid red;  在IE8以上浏览器有效,IE7以下版本无效   解决方案:需给<table&g ...

  7. 多节点bigchaindb集群部署

    文章比较的长,安装下来大概4个小时左右,我个人使用的服务器,速度会快一点. 安装环境 ostname ip os node-admin 192.168.237.130 ubuntu 18.04.2 d ...

  8. C# 关于爬取网站数据遇到csrf-token的分析与解决

    需求 某航空公司物流单信息查询,是一个post请求.通过后台模拟POST HTTP请求发现无法获取页面数据,通过查看航空公司网站后,发现网站使用避免CSRF攻击机制,直接发挥40X错误. 关于CSRF ...

  9. 微信小程序 上传图片并等比列压缩到指定大小

    微信小程序官方API中  wx.chooseImage() 是可以进行图片压缩的,可惜的是不能压缩到指定大小. 实际开发中需求可能是压缩到指定大小: 原生js可以使用canvas来压缩,但由于微信小程 ...

  10. string+DP leetcode-4.最长回文子串

    5. Longest Palindromic Substring 题面 Given a string s, find the longest palindromic substring in s. Y ...