uC/OS-II OS_TASK.C中有关任务管理的函数
函数大致用途
OS_TASK.C是uC/OS-II有关任务管理的文件,它定义了一些函数:建立任务、删除任务、改变任务的优先级、挂起和恢复任务,以及获取有关任务的信息。
函数 | 用途 |
---|---|
OSTaskCreate() | 建立任务 |
OSTaskCreateExt() | 扩展建立任务 |
OSTaskStkChk() | 堆栈检验 |
OSTaskDel() | 删除任务 |
OSTaskDelReq() | 请求删除任务 |
OSTaskChangePrio() | 改变任务的优先级 |
OSTaskSuspend() | 挂起任务 |
OSTaskResume() | 恢复任务 |
OSTaskQuery() | 获取有关任务的信息 |
状态切换图
OSTaskCreate() and OSTaskCreateExt()
建立任务函数,一旦任务建立就进入就绪态准备运行。
任务可以在多任务开始之前建立,也可以是动态地被一个运行着的任务建立。
如果一个任务是被另一个任务建立的,而这个任务的优先级高于建立它的那个任务,这时,这个刚刚建立的任务将立即得到CPU控制权。
OSTaskDel()
将任务转入睡眠态。
它可以由本任务执行,也可以由另一个任务调用该函数使本任务进入睡眠态
OSTaskSuspend() and OSTaskResume()
挂起任务和恢复任务:将任务转入挂起态、将任务从挂起态转入就绪态。
一些延迟函数和事件函数也可以完成任务到挂起状态的转换。
OSTaskChangePrio()
改变任务的优先级。
它本身不改变任务状态,但是可能会影响任务的状态。
例:执行任务将就绪任务的优先级改的比自己高,这样cpu的控制权就会立刻被转到那个任务手中
OSTaskStkChk()
为了避免为任务分配过多的堆栈空间,从而减少自己的应用程序的代码所需内存数量。这时就需要获取任务实际所需的堆栈空间大小。
本函数的操作:顺着堆栈的栈底开始计算空闲的堆栈空间大小,具体实现方法是统计存储值为0的连续堆栈入口的数目,直到发现存储值不为0的堆栈入口
OSTaskQuery()
该函数通过检查对应任务的任务控制块中的内容来得到任务的信息。
可以获取自身或其他应用任务的信息。
OSTaskIdle()
当所有任务都不在就绪态中,操作系统将执行空闲任务的函数OSTaskIdle()。
这个函数由系统定义,不能删除、挂起或者改变优先级。
有关中断
如果中断没有被禁止,正在运行的任务是可以被中断的。任务被中断后,进入中断服务态(ISR).响应中断时,正在执行的任务处于挂起态,中断服务子程序控制了系统的控制权。
中断服务程序完成后,不一定返回到被中断的任务。
因为uC/OS-II总是执行就绪态任务中优先级最高的任务。由于中断服务程序的执行,可能使被中断的程序不是就绪态任务中优先级最高的。
例如下面几个情况:
1、中断服务程序利用了时间的发生,而使得一个或读个更高优先级任务进入就绪态
2、中断服务程序建立或者恢复了一个新的高优先级任务
3、中断程序挂起了被中断的任务。
一般来说中断服务程序不会干涉任务的调度,所以后两种情况不会经常发生。第一种情况比较常见
uC/OS-II OS_TASK.C中有关任务管理的函数相关推荐
- UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机
UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...
- Lab 6:uC/OS II
为什么80%的码农都做不了架构师?>>> 目标: 移植uC/OS II到RPi上,实现两个任务的调度.这两个任务能轮流点亮LED,并通过串口发送消息表明自己正在运行 具体步骤: ...
- uc/OS II——多任务设计
uc/OS II--多任务设计 (1)设计 开始任务 [1]/声明 开始任务 任务块 static OS_STK App_TaskStartStk[APP_TASK_START_STK_SIZE]; ...
- linux串口互斥,UART0串口编程之在UC/OS—II中遭遇的危机
一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来接收数据. 2.在进行串行通信时,双方遵循相同的通信 ...
- UC/OS II 任务管理(4)之任务创建
任务的创建函数 ucosii之前的版本都只支持64个任务,但是V2.90版本支持的任务数量达到了256. 用法和原理都差不多.我这里就只介绍任务数不大于64的情况.当任务大于64的时候,只需要配置相关 ...
- uc os ii与linux,uC/OS-II嵌入式实时操作系统的几大特点
uC/OS-II嵌入式实时操作系统的几大特点 出处:网络 发布于:2018-09-12 14:46:03 uC/OS-II的特点 1.uC/OS-II是由Labrosse先生编写的一个开放式内核,主要 ...
- 【 uC/OS II 】uC/OS II 源代码阅读(os_task.c)任务管理
前言 这个任务管理源代码,是整个系统最核心的部分,也是最难的部分,多看几遍吧.其中的核心结构体是: typedef struct os_tcb {OS_STK *OSTCBStkPtr; /* Poi ...
- UC/OS II 消息邮箱
消息邮箱是uC/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量.通常该指针指向一个包含了"消息"的特定数据结构.如果该指针为空,说明 ...
- 【 uC/OS II 】uC/OS II 源代码阅读(os_mbox.c)消息邮箱
前言 关于消息邮箱,是一个消息邮箱里面,只能存储一条消息.核心结构体如下: #if (OS_EVENT_EN) && (OS_MAX_EVENTS > 0u) typedef s ...
最新文章
- 【计算理论】计算复杂性 ( NP 类不同表述 | 团问题 | P 对 NP 问题 )
- Oracle10g中安装Perl环境所产生的冲突
- csp-c模拟测试43「A·B·C」
- 【转】在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1
- License for package Android SDK Build-Tools 28.0.3 not accepted.
- 固若金汤 - PostgreSQL pgcrypto加密插件
- Linux的LCD驱动
- DM - Manager工具
- 如何用运营思维,搭建会员运营体系
- con 元器件符号_multisim元器件符号速查
- 消息中间件----ActiveMQ
- 日历之 poj1008玛雅日历
- C语言标准ANSI C、C语言的特点、C语言的关键字(32个)
- J2SE:总结—基础很重要哈!
- 贝叶斯(朴素贝叶斯,正太贝叶斯)及OpenCV源码分析
- 学习半年Java的初次经验分享
- 前端JavaScript+HTML
- 一文带你全方位(架构,原理及代码实现)了解Flink(3.2W字建议收藏)
- 朕 JAVAEE 实验02 实验报告
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
热门文章
- python watchdog占用,python基于watchdog库全自动化监控目录文件
- ztree java 增删改_Ztree实现增删改查
- c语言程序设计徐立辉答案,C语言程序设计 牛志成,徐立辉,刘冬莉著 清华大学出版社 9787302165620...
- C#GRPC 服务端与客户端通信,故障排除记录
- React之函数中的this指向
- 关于 Error: No PostCSS Config found in 的错误
- 记录一个前端架构的想法
- 在React中获取数据
- cf1206解题报告
- 使用phpstorm+wamp实现php代码实时调试审计