【UCOSIII操作系统】任务篇(2)相关API函数
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函数相关推荐
- FreeRTOS学习笔记【六】——FreeRTOS 任务相关 API 函数
上一章我们学习了 FreeRTOS 的任务基础知识,本章就正式学习如何使用 FreeRTOS 中有关任务的 API 函数.本来本章想讲解 FreeRTOS 的任务原理知识的,但是很多初学者还没使用过 ...
- 2、FreeRTOS任务相关API函数
1.任务相关的API函数 函数存在于task.c中,主要的函数有: xTaskCreate():使用动态的方法创建一个任务: xTaskCreatStatic():使用静态的方法创建一个任务(用的非常 ...
- 【STM32】FreeRTOS 任务相关 API 函数
文章目录 1 任务创建和删除 API 函数 2 任务创建和删除实验(动态方法) 3 任务创建和删除实验(静态方法) 4 任务挂起和恢复 API 函数 5 任务挂起和恢复实验 1 任务创建和删除 API ...
- FreeRTOS任务相关API函数---查询/改变某个任务的优先级+获取全部/某个任务状态信息
本文是<ALIENTEK STM32F429 FreeRTOS 开发教程>第十一章学习笔记 第一章笔记–FreeRTOS简介与源码下载 第二章笔记–FreeRTOS在STM32F4上移植 ...
- 【UCOSIII操作系统】任务篇(1)创建任务
UCOSIII操作系统 UCOSIII操作系统--任务篇(1)创建任务 一.UCOSIII--任务 简介 二.创建任务流程 1.定义任务栈 2.定义任务控制块TCB 3.定义任务主体函数 4.创建任务 ...
- 【UCOSIII操作系统】系统初始化篇(1)系统初始化
UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(1)系统内部任务 系统初始化函数 UCOSIII默认有5个系统任务: 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UC ...
- 【UCOSIII操作系统】系统初始化篇(2)CPU,SysTick,内存初始化
UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(2)CPU,SysTick,内存初始化 CPU初始化 SysTick初始化 内存初始化 初始化实例 UCOSIII其他内容导航不迷路 U ...
- 【UCOSIII操作系统】简介
UCOSIII操作系统 现在开始整理UCOSIII实时操作系统的内容 UCOSIII 简介 关于UCOSIII的移植 现在开始整理UCOSIII实时操作系统的内容 UCOSIII其他内容导航不迷路 U ...
- 剪贴板所有api函数
编写剪贴板相关程序是收集的相关API函数. (一)ChangeClipboardChain 将剪贴的连接从一个句柄转到下一个句柄. BOOL ChangeClipboardChain( HWND hW ...
- 基于API函数的串口通信(方法讲解)
用到的串口通信编程方法有:使用通信控件.在高级语言中嵌入汇编以及使用API函数.在这几种方法中,使用API函数编写的串口通信程序最为高效.灵活.串口通信编程将用到三种API函数 --串口通信相关API ...
最新文章
- javaweb学习总结——Filter高级开发
- vector 指针 的指针
- jmeter中控制器其中一个访问不到_Jmeter体系结构和运行原理
- Mysql大小写敏感的问题 --转
- AppBoxFuture(四). 随需而变-Online Schema Change
- 测试linux内核镜像,测试Petalinux BSP镜像参考例子
- 逃跑吧少年辅助快乐羊儿吧
- C++算法学习(动态规划算法)
- CUDA文件缺失解决方法——以cudart64_110.dll not found为例
- R、Rstudio、Rtools的下载与安装
- 微信小程序云数据库调用模板
- 无线局域网和蜂窝移动网络_手机连上WiFi之后,你会关闭移动网络吗?这其中大有讲究...
- java pgm_如何读取Java中的PGM图像?
- 做个jmeter登陆百度网盘的实例
- java图片叠加_[原创]JAVA中图片上叠加文字的方法
- 第一章 接口测试基础
- android旋转的列表,Android利用layer-list实现ProgressBar顺时针及逆时针旋转
- c语言中语句开始的标志是,第一个单片机程序(C语言编写)
- 为什么深层神经网络难以训练_深度学习与统计力学(III) :神经网络的误差曲面...
- CMA软件产品测试报告在哪申请,软件测试费用又是多少?