UCOSIII操作系统

  • UCOSIII操作系统——任务篇(2)相关API函数
    • 常用的任务函数
    • 创建任务->OSTaskCreate()
    • 删除任务->OSTaskDel()
      • 任务删除函数原型
      • 任务删除函数使用实例
      • 任务删除函数一般使用情况
    • 任务挂起->OS_TaskSuspend()
      • 任务挂起函数原型
    • 任务恢复->OSTaskResume()
      • 任务恢复函数原型

UCOSIII其他内容导航不迷路
UCOSIII操作系统-简介
【UCOSIII操作系统】任务篇(1)创建任务
【UCOSIII操作系统】系统初始化篇(1)系统初始化
【UCOSIII操作系统】系统初始化篇(2)CPU,SysTick,内存初始化
【UCOSIII操作系统】硬件初始化篇(1)硬件初始化以及开始运行系统
【UCOSIII操作系统】消息队列篇(1)消息队列
【UCOSIII操作系统】消息队列篇(2)任务消息队列
【UCOSIII操作系统】信号量与互斥量篇(1)信号量
【UCOSIII操作系统】信号量与互斥量篇(2)互斥量
【UCOSIII操作系统】信号量与互斥量篇(3)任务信号量
【UCOSIII操作系统】事件篇
【UCOSIII操作系统】中断管理篇
【UCOSIII操作系统】临界段篇
【UCOSIII操作系统】软件定时器篇
【UCOSIII操作系统】内存管理篇
已完结

说在前面:
这个内容不适合0基础的人,因为这里只讲了应用层面的东西,并没有深入内核讲解,所以要从零开始学UCOSIII的朋友,可以先去学完入门内容,再来观看这个笔记加深印象。
这篇文章是个人学习整理,如有错误请指正

UCOSIII操作系统——任务篇(2)相关API函数

常用的任务函数

函数 描述
OSTaskCreate() 创建任务
OSTaskDel() 删除任务
OS_TaskSuspend() 任务挂起
OSTaskResume() 任务恢复

创建任务->OSTaskCreate()

该函数在任务篇(1)创建任务已经讲解,这里就不再赘述。

删除任务->OSTaskDel()

任务删除函数原型

void  OSTaskDel (OS_TCB  *p_tcb,     // 要删除的任务控制块指针OS_ERR  *p_err)       // 返回错误类型
  • OSTaskDel()用于删除-一个任务。 当一个任务删除另外-一个任务时,形参为要删除任务创建时返回的任务句柄(控制块TCB),如果是删除自身,则形参为NULL。要想使用该函数必须在os_ cfg.h 中把OS_ CFG_ TASK_ DEL_ EN宏定义配置为1,删除的任务将从所有就绪,阻塞,挂起和事件列表中删除。
  • 删除任务是说任务将返回并处以删除(休眠)状态,任务的代码不再被uCOS调用,删除任务不是删除代码,删除任务和挂起任务有些相似,其实有着本质的区别,根本来说,最大的不同就是删除任务队任务控制块的操作,我们知道在任务创建的时候,需要给每个任务分配一个任务控制块,这个任务控制块存储有关这个任务重要的信息,对任务间有至关重要的作用,挂起任务根本不会动任务控制块,但删除任务就会把任务控制块进行初始化,这样子关于任务的任何信息都被抹去。注意了,删除任务并不会释放任务的堆栈空间。
  • 虽然UCOSI允许用户在系统运行的时候来删除任务,但是应该尽量的避免这样的操作,如果多个任务使用同一个共享资源,这个时候任务A正在使用这个共享资源,如果删除了任务A,这个资源并没有得到释放,那么其他任务就得不到这个共享资源的使用权,会出现各种奇怪的结果。

任务删除函数使用实例

  • 删除自身
OSTaskDel((OS_TCB*)0,&err);  //删除start_task任务自身,第一个参数为0或者NULL
  • 删除任务
OSTaskDel( & AppTaskLed1TCB, & err ); /* 删除LED 任务! */

任务删除函数一般使用情况

一般用在启动任务,即StartTask,因为启动任务一般就是初始化CPU,内存,创建其他任务函数,创建信号量,消息队列等东西的任务,所以只要一开始运行一次就可以删除了。

任务挂起->OS_TaskSuspend()

任务挂起函数原型

void   OSTaskSuspend (OS_TCB  *p_tcb,    // 要挂起的任务控制块指针OS_ERR  *p_err)   // 返回错误类型
  • 挂起指定任务。被挂起的任务绝不会得到CPU的使用权,不管该任务具有什么优先级。任务可以通过调用OS_TaskSuspend)函数都可以将处于任何状态的任务挂起,被挂起的任务得不到CPU的使用权,也不会参与调度,它相对于调度器而言是不可见的,除非它从挂起态中解除。任务挂起是我们经常使用的一个函数,想要使用的就必须将宏定义OS_ CFG_ TASK_ SUSPEND_ EN使能,这样在编译的时候才会包含OS _TaskSuspend()这个函数。
  • 我们可以多次调用OSTaskSuspend()函数来挂起一个任务,因此我们需要调用同样次数的
    OSTaskResume()函数才可以恢复被挂起的任务,这一点非常重要

任务恢复->OSTaskResume()

任务恢复函数原型

void  OSTaskResume (OS_TCB  *p_tcb,      // 要恢复的任务控制块指针OS_ERR  *p_err)       // 返回错误类型
  • 既然有任务的挂起,那么当然一样有恢复,不然任务怎么恢复呢,OSTaskResume()函数用来恢复被OSTaskSuspend()函数挂起的任务,任务恢复就是让挂起的任务重新进入就绪状态,恢复的任务会保留挂起前的状态信息,在恢复的时候根据挂起时的状态继续运行。如果被恢复任务在所有就绪态任务中,处于最高优先级列表的第一位,那么系统将进行任务上下文的切换。
  • OSTaskResume()函 数是唯一能恢复被挂起任务的函数。如果被挂起的任务还在等待别的内核对象,比如事件标志组、信号量、互斥信号量、消息队列等,即使使用OSTaskResume(函数恢复了被挂起的任务,该任务也不一定能立即运行,该任务还是要等相应的内核对象,只有等到内核对象后才可以继续运行。

以上就是任务操作的基本内容啦,有这些大概也就够用了。
多看一些示范历程,从里面学到实际的应用操作
比如STM32系列的,可以参考正点原子,和野火的例程,相关代码都在他们各自的论坛都可以下载到哦,B站还有他们的UCOSIII的视频,建议可以两个视频结合着看,可以领悟不同的东西

【UCOSIII操作系统】任务篇(2)相关API函数相关推荐

  1. FreeRTOS学习笔记【六】——FreeRTOS 任务相关 API 函数

    上一章我们学习了 FreeRTOS 的任务基础知识,本章就正式学习如何使用 FreeRTOS 中有关任务的 API 函数.本来本章想讲解 FreeRTOS 的任务原理知识的,但是很多初学者还没使用过 ...

  2. 2、FreeRTOS任务相关API函数

    1.任务相关的API函数 函数存在于task.c中,主要的函数有: xTaskCreate():使用动态的方法创建一个任务: xTaskCreatStatic():使用静态的方法创建一个任务(用的非常 ...

  3. 【STM32】FreeRTOS 任务相关 API 函数

    文章目录 1 任务创建和删除 API 函数 2 任务创建和删除实验(动态方法) 3 任务创建和删除实验(静态方法) 4 任务挂起和恢复 API 函数 5 任务挂起和恢复实验 1 任务创建和删除 API ...

  4. FreeRTOS任务相关API函数---查询/改变某个任务的优先级+获取全部/某个任务状态信息

    本文是<ALIENTEK STM32F429 FreeRTOS 开发教程>第十一章学习笔记 第一章笔记–FreeRTOS简介与源码下载 第二章笔记–FreeRTOS在STM32F4上移植 ...

  5. 【UCOSIII操作系统】任务篇(1)创建任务

    UCOSIII操作系统 UCOSIII操作系统--任务篇(1)创建任务 一.UCOSIII--任务 简介 二.创建任务流程 1.定义任务栈 2.定义任务控制块TCB 3.定义任务主体函数 4.创建任务 ...

  6. 【UCOSIII操作系统】系统初始化篇(1)系统初始化

    UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(1)系统内部任务 系统初始化函数 UCOSIII默认有5个系统任务: 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UC ...

  7. 【UCOSIII操作系统】系统初始化篇(2)CPU,SysTick,内存初始化

    UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(2)CPU,SysTick,内存初始化 CPU初始化 SysTick初始化 内存初始化 初始化实例 UCOSIII其他内容导航不迷路 U ...

  8. 【UCOSIII操作系统】简介

    UCOSIII操作系统 现在开始整理UCOSIII实时操作系统的内容 UCOSIII 简介 关于UCOSIII的移植 现在开始整理UCOSIII实时操作系统的内容 UCOSIII其他内容导航不迷路 U ...

  9. 剪贴板所有api函数

    编写剪贴板相关程序是收集的相关API函数. (一)ChangeClipboardChain 将剪贴的连接从一个句柄转到下一个句柄. BOOL ChangeClipboardChain( HWND hW ...

  10. 基于API函数的串口通信(方法讲解)

    用到的串口通信编程方法有:使用通信控件.在高级语言中嵌入汇编以及使用API函数.在这几种方法中,使用API函数编写的串口通信程序最为高效.灵活.串口通信编程将用到三种API函数 --串口通信相关API ...

最新文章

  1. 通过全局路由表的方式实现MPLS ***上互联网
  2. 各种友(e)善(xin)数论总集,从入门到绝望2
  3. Matlab并行编程函数cellfun arrayfun
  4. python的mag模块_Python全栈-magedu-2018-笔记22
  5. PHP 利用 curl 发送 post get del put patch 请求
  6. 【JavaScript】关于eval( )
  7. 手把手教你写DI_0_DI是什么?
  8. FE助手 json格式化 reslet client
  9. 状态栏编程(显示系统时间和进度条)
  10. 前端学习(361):svn操作后续
  11. 周鸿祎回顾IPO一周年:保持创业心态 看好无线
  12. 量子计算机退相干问题怎么办,量子退相干
  13. 芒果文件服务器,芒果服务器
  14. c#绝对值函数图像_取绝对值(C#、C++、js)
  15. 苹果电脑系统如何读取移动硬盘数据?
  16. OPENCV C++ 找到最大内接矩形(正方形)
  17. 菜鸟进阶黑客知识整合大全(1)
  18. 关于微信公众号生成二维码如何保存到相册
  19. 【C++000】ASCII码转换公式(大小写转换)
  20. 今天,我和C开始交往了

热门文章

  1. qt QDir 枚举类型
  2. 2021 RoboCup机器人中国赛大学组比赛即将开始 智能佳为您提供适合的比赛平台
  3. Linux 安装mongodb数据库
  4. 代购集运系统平台一键上传淘宝商品至韩国coupang经验分享
  5. 【STM32】 色环电阻
  6. 实验室检测专用计算机的维护保养,计算机实验室维护与管理.doc
  7. list对象转map
  8. Shopee菲律宾站如何选品?听Shopee Man本土多店管理系统告诉你
  9. 学会这个前端特效520还怕没CP伴侣
  10. android模拟器多点触摸,Windows 7 多点触摸开发模拟器和多点触摸驱动