任务特性
每个任务有自己的环境,不依赖于其他任务与调度器
任何时间点只有一个任务运行。由调度器决定
上下文环境:(寄存器值、堆栈内容等)
调度器保证的就是任务开始执行时的上下文环境与上一次退出时相同
所以每个任务都必须要有堆栈。再次执行时取出上下文环境。
任务堆栈的作用:A->B B运行完切回A,从刚被中断的地方继续运行。则需要将A的状态保存在堆栈中

支持抢占以及优先级、每个任务都有堆栈导致RAM使用量增大
使用抢占必须仔细考虑重入问题(仪表不考虑抢占)

任务状态
运行态,永远只有一个运行
就绪态, 初始进入
阻塞态,某个任务在等待某事件、变量等,在等待的状态:阻塞。
有超时时间,超时未等到退出阻塞态
挂起态,挂起有对应的挂起、解挂动作
三个态都可以进挂起,解挂后到就绪态

+图
运行所有就绪态中的优先级最高的

任务优先级
优先级范围:0-configMAX..-1 config宏是最大优先级
数字越大优先级越高(ucOS是数字越小越高)

任务实现
:任务是不能return的,是个死循环
如果要退出有相应的逻辑处理

任务控制块
描述任务属性的数据结构 TCB_t
在 port.c

1。任务堆栈的栈顶。
2。状态列表
3。时间列表
4。任务优先级
5。任务堆栈
6。任务名字

任务堆栈

任务堆栈:用于保存现场。CPU的寄存器的值。R0-R15
堆栈变量类型:stacktype_t :u32
堆栈如果是50个,那么byte有 50*4
任务堆栈大小:需要大于任务所需的 。最大1024

任务创建和删除API tasks.c文件
创建三方法:
1、xTaskCreate
2、xTaskCreateStaic
3、xTaskCreateRestricted//用MPU限制的任务

参数: 1、指向任务入口,任务函数
2、任务名字
3、任务堆栈大小
4、传递给任务函数的参数//
5、任务优先级
6、任务句柄 //任务创建成功后,返回任务句柄。即任务的堆栈
动态方法:
创建函数返回值如果是pdpass 成功,pdfalse 失败,//一般失败原因是堆内存不够,没申请到
静态方法:
创建成功返回的是任务句柄,返回NULL是失败

创建任务时有两个内存: 1、任务控制块
2、任务堆栈
动态方法:这两个内存会自动被创建。静态需要手动提供

4、vTaskDelete
参数:任务句柄//独一无二、标识任务
没有返回值

创建消息队列、信号量等,都有动态和静态方法

挂起、恢复:
挂起堆栈还在。挂起之后不能再被调度器调用进入运行态。挂起后没有超时时间//阻塞态有超时时间,超时退出阻塞
恢复后进入就绪态

vTaskSuspend //参数:要挂的任务的任务句柄。如果是NULL,则挂起自己、无返回值
vTaskResume //参数:要挂的任务的任务句柄 退出挂起态唯一途径。无返回值
vTaskRessumeFromISR//参数:要挂的任务的任务句柄。resume的中断版本。
//返回值:pdTRUE:恢复运行的任务等于或者高于正在运行的任务,退出中断服务函数后需要进行上下文切换
pdFALSE:恢复运行的任务低于当前正在运行的任务,退出中断后,不需要进行上下文切换

任务查询相关API (有空再仔细看)

1、查询任务优先级
2、改变某个任务的优先级
3、获取系统中任务状态
4、获取某个任务信息
5、获取某个任务标签
6、获取当前正在运行的任务的任务句柄
7、根据任务名字查找某个任务的句柄
8、获取空闲任务的任务句柄
9、获取任务对战的历史剩余最小值(FREERTOS叫做高水位线)
10、获取某个任务的状态
11、获取某个任务的任务名字
12、获取系统时间计数器
13、在中断服务函数中获取时间计数器
14、获取任务调度器的状态、开启或者未开启
15、获取当前系统中存在的任务数量
16、以表格的形式输出当前系统中所有任务的详细信息
17、获取每个任务的运行时间
18、设置任务标签tag值
19、设置线程本地存储指针
20、获取线程本地存储指针

vTaskList
该函数将统计到的信息放入一个表格:
创建任务名字,
任务状态:B 阻塞态 R 就绪态 S 挂起态 D 删除态
任务优先级
任务堆栈的“高水位线”:即堆栈历史最小剩余大小
任务编号:唯一

需要提供一个内存去保存。参数就是内存(*pcWriteBuffer)

配置:
使用这个功能,需将config的两个宏定义为1

FreeRTOS学习笔记1:任务的更多相关文章

  1. FreeRTOS学习笔记——任务间使用队列同步数据

    1.前言 在嵌入式操作系统中队列是任务间数据交换的常用手段,队列是生产者消费者模型的重要组成部分.FreeRTOS的队列简单易用,下面结合一个具体例子说明FreeRTOS中的队列如何使用. 2.参考代 ...

  2. FREERTOS学习笔记

    2012-02-25 21:43:40 为提升自己对实时操作系统(RTOS)的认识,我学习了freeRTOS. 理解了OS任务的状态.优先级的概念.信号量的概念.互斥的概念.队列.内存管理.这都是和R ...

  3. FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...

  4. FreeRTOS学习笔记--任务优先级

    FreeRTOSConfig.h 中的常量configMAX_PRIORITIES的值就是任务优先级的最大数值,这个数值可以按照自己的需要改动,当然值越大,内核对内存的开销就越大,一般设置一个满足自己 ...

  5. FreeRTOS学习笔记4:时间管理

    绝对时间:abs Time相对时间:百分比% time IDLE是空闲任务. RUN_Time_State:port...()初始化一个外设提供时基单元 //具体初始化要自己操作这个定时器的分辨率高于 ...

  6. FreeRTOS学习笔记2:列表

    list.h 列表结构List_t 列表:主要看三个 xLIST:1.5检查列表完整性的.但是需要开启.默认不开启 2:记录列表中列表项的 数量:3:记录当前列表项 索引号:4:列表中的最后一个 列表 ...

  7. FreeRTOS学习笔记5:队列

    为通信而准备 1.任务存储存储缓冲机制:先进先出 FIFO 后进先出 LIFO (ucOS消息队列采用的是引用传递,传递的都是指针.采用引用的话,内容必须一致保持可见性,即消息内容必须有效.1.不能传 ...

  8. FreeRTOS学习笔记3:内核控制及开启调度器

    内核控制函数API 应用层中不会用到taskYIELD() //任务切换.会自动切换当前就绪表里优先级最高的任务 临界区 //不能被打断的代码段任务中进入临界区任务中退出临界区中断服务进入临界区中断服 ...

  9. LwIP学习笔记——STM32 ENC28J60移植与入门

    0.前言     去年(2013年)的整理了LwIP相关代码,并在STM32上"裸奔"成功.一直没有时间深入整理,在这里借博文整理总结.LwIP的移植过程细节很多,博文也不可能一一 ...

随机推荐

  1. 洛谷p1980 计数问题

    题目描述 试计算在区间 111 到 nn n的所有整数中,数字x(0≤x≤9) x(0 ≤ x ≤ 9)x(0≤x≤9)共出现了多少次?例如,在 111到11 11 11中,即在 1,2,3,4,5, ...

  2. 论文阅读笔记(五)【CVPR2012】:Large Scale Metric Learning from Equivalence Constraints

    由于在读文献期间多次遇见KISSME,都引自这篇CVPR,所以详细学习一下. Introduction 度量学习在机器学习领域有很大作用,其中一类是马氏度量学习(Mahalanobis metric ...

  3. USACO06DEC 牛奶模式

    题意:求最长的可重叠的 K重复子串 的长度 考虑二分长度s,转化为验证性问题. 对SA进行分组.保证组内Height最小为s.这样在组内RMQ就可以任意了,因为RMQ一定是大于S的. 只要组内元素个数 ...

  4. Java安装及环境配置

    一.jdk安装及环境配置 1. 下载jdk 去oracle官网下载,这里使用的jdk版本为 有一个需要注意的问题就是7u71后的jdk有两个版本,奇数版本为无BUG版,偶数版包含奇数版全部内容但是有一 ...

  5. KMP小扩展,找出子串在主串中出现的所有位置

    KMP算法能够高效地匹配字符串,找出子串(T串)在主串(S串)中出现的首个位置的原算法网上已经有很多优秀的博文进行详细讲解,这里就不多赘述. 这篇博文主要是对KMP原算法稍作改动,使其能够在主串中把所 ...

  6. dmesg用法

    百科概念:dmesg是一种程序,用于检测和控制内核环缓冲.程序用来帮助用户了解系统的启动信息. 解释:dmesg命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构.cpu.挂载的硬件 ...

  7. Python 之路Day04

    列表 list:数据类型之一,存储数据,大量的,存储不同类型的数据 lst=[1,2,'alex',True,['钥匙','门禁卡',['银行卡']]] print(lst) 列表 -- 容器 别的语 ...

  8. [HDU4609] 3-idiots - 多项式乘法,FFT

    题意:有\(n\)个正整数,求随机选取一个3组合,能构成三角形的概率. Solution: 很容易想到构造权值序列,对其卷积得到任取两条边(可重复)总长度为某数时的方案数序列,我们希望将它转化为两条边 ...

  9. JASON

    JSON 数据格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人 ...

  10. Chrome浏览器所有页面崩溃

    问题描述 Chrome浏览器所有页面崩溃,包括设置页面,"喔唷,崩溃啦!" 显示错误码:STATUS_INVALID_IMAGE_HASH Chrome所有插件报错,右下角一串弹框 ...