FreeRTOS任务基础知识总结

2023-05-16

1、单任务系统-前后台系统:中断服务函数为前台程序,大循环while(1)作为后台程序。
      前后台系统的实时性差,但是前后台系统简单,资源消耗少。
      
2、FreeRTOS是一种抢占式的实时多任务系统,其任务调度器也是抢占式的。

3、高优先级的任务可以打断低优先级任务的运行而取得CPU的使用权,这样就保证了那些紧急任务的运行。
       高优先级的任务执行完成以后重新把CPU的使用权还给低优先级的任务,这个就是抢占式多任务系统的基本原理。
      
4、任务特性:
       1)简单。
       2)没有使用权。
       3)支持抢占。
       4)支持优先级。
       5)每个任务都拥有堆栈导致了RAM使用量增大。
       6)如果使用抢占式的话必须仔细考虑重入的问题。
       
5、任务状态:
       1)运行态
       2)就绪态
       3)阻塞态
       4)挂起态
       
6、优先级数字越低表示任务的优先级越低,0的优先级最低,configMAX_PRIORITIES-1的优先级最高。空闲任务的优先级最低,为0

7、任务创建
      用函数xTaskCreate()或xTaskCreateStatic()来创建任务。
      
8、任务控制块
      FreeRTOS的每个任务都有一些属性需要存储,FreeRTOS把这些属性集合到一起用一个结构体来表示,这个结构体叫做任务控制块:TCB_t,
      在使用函数xTaskCreate()创建任务的时候就会自动给每个任务分配一个任务控制块。
      
9、任务堆栈
      任务的实际堆栈大小就应该是我们所定义的4倍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS任务基础知识总结 的相关文章

  • FreeRTOS系列

    1 多任务系统 1 1 前后台系统 单片机裸机开发时 一般都是在main函数里面用while 1 做一个大循环来完成所有的处理 循环中调用相应的函数完成所需的处理 有时也需要在中断中完成一些处理 相对于多任务系统而言 这就是单人单任务系统也
  • 基于HAL库的FREERTOS----------二.任务API函数

    任务API函数览概 CUBEMX对 做了API的封装 很多 的函数没有封装到位 可以用原函数调用 任务API函数分别介绍 1 uxTaskPriorityGet 此函数用来获取指定任务的优先级 要使用此函数的话宏 INCLUDE uxTas
  • 【FreeRtos学习笔记】STM32 CubeMx——Timers(定时器)

    目录 1 软件定时器 2 示例程序 2 1 例程功能 2 2 步骤 2 3 实验结果 2 4 函数讲解 1 软件定时器 定时器是MCU常用的外设 我们在学习各种单片机时必然会学习它的硬件定时器 但是 MCU自带的硬件定时器资源是有限的 而且
  • FreeRTOS config开始的宏

    FreeRTOSConfig h系统配置文件中可以自定义 FreeRTOS h中定义默认值 configAPPLICATION ALLOCATED HEAP 默认情况下FreeRTOS的堆内存是由编译器来分配的 将宏configAPPLIC
  • 【FreeRTOS 信号量】互斥信号量

    互斥信号量与二值信号量类似 但是互斥信号量可以解决二值信号量出现的优先级翻转问题 解决办法就是优先级继承 普通互斥信号量创建及运行 参阅安富莱电子demo 互斥信号量句柄 static SemaphoreHandle t xMutex NU
  • STM32F103移植FreeRTOS必须搞明白的系列知识---3(堆栈)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • FreeRTOS学习笔记 6 - 互斥量

    目录 1 创建 2 获取 3 释放 4 测试 FreeRTOS不支持调度方式的设置 所以下面2个宏定义可以随意设置值 define RTOS IPC FLAG FIFO 0x00 define RTOS IPC FLAG PRIO 0x01
  • 一文教你学会keil软件仿真

    仿真在我们调试代码中是非常重要的 通过仿真 我们可以快速定位到错误代码 或者错误逻辑的地方 这里我就以上一篇博客为例 教大家如何软件仿真 软件仿真不需要单片机 直接通过keil软件进行代码调试 一 打开工具 二 选择软件仿真 三 开始仿真
  • 【FreeRTOS开发问题】FreeRTOS内存溢出

    FreeRTOS内存溢出 如下图所示 FreeRTOS编译完成后可以看到 系统提示无法分配内存到堆 Objects Template axf Error L6406E No space in execution regions with A
  • FreeRTOS临界区

    FreeRTOS临界区是指那些必须完整运行 不能被打断的代码段 比如有的外设的初始化需要严格的时序 初始化过程中不能被打断 FreeRTOS 在进入临界区代码的时候需要关闭中断 当处理完临界区代码以后再打开中断 FreeRTOS 系统本身就
  • 【FreeRTOS(三)】任务状态

    文章目录 任务状态 任务挂起 vTaskSuspend 取消任务挂起 vTaskResume 挂起任务调度器 vTaskSuspendAll 取消挂起任务调度器 xTaskResumeAll 代码示例 任务挂起 取消任务挂起 代码示例 挂起
  • FreeRTOS临界段和开关中断

    http blog sina com cn s blog 98ee3a930102wg5u html 本章教程为大家讲解两个重要的概念 FreeRTOS的临界段和开关中断 本章教程配套的例子含Cortex M3内核的STM32F103和Co
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • FreeRTOS之事件

    FreeRTOS之事件 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 一 事件定义 事件 事件集 与高数上的集合意义差不多 事件啊 其实是实现任务间通信的机制 主要用于实现多任务间的同步 但是事件类型
  • 单片机通信数据延迟问题排查

    1 问题说明 笔者在最近的项目中 发现系统的响应延迟较高 经过排查 排除了单片机运行卡死的问题 2 原因分析 具体排查过程这里就不细致说明了 直接给出排查后原因 任务执行周期规划不合理 导致freertos队列发送接收到的命令有延迟 为了便
  • STM32 Freertos 添加 外部sram heap_5.c

    1 添加外部SRAM 初始化 2 添加heap 5 c 3 初始化heap 5 c 外部堆栈 Define the start address and size of the two RAM regions not used by the
  • 再论FreeRTOS中的configTOTAL_HEAP_SIZE

    关于任务栈和系统栈的基础知识 可以参考之前的随笔 FreeRTOS 任务栈大小确定及其溢出检测 这里再次说明 define configTOTAL HEAP SIZE size t 17 1024 这个宏 官方文档解释 configTOTA
  • 当一个任务写入变量而其他任务读取该变量时,我们是否需要信号量?

    我正在研究 freeRtos 并且我有一个名为 x 的变量 现在 每秒只有一个任务正在写入该变量 而其他任务正在读取该变量值 我需要用互斥锁来保护变量吗 如果变量为 32 位或更小 并且其值是独立的并且不与任何其他变量一起解释 则不需要互斥
  • 防止GCC LTO删除函数

    我使用 GCC ARM Embedded 和 FreeRTOS FreeRTOS具有的功能vTaskSwitchContext 仅在某些情况下使用 内联汇编代码 问题是 当我使用LTO时 GCC不考虑内联汇编代码并认为该函数没有被使用 因此
  • 有可用的 FreeRTOS 解释语言库吗?

    我在一家公司工作 该公司使用 FreeRTOS 为多个设备创建固件 最近 我们对新功能的要求已经超出了我们固件工程师的工作能力 但我们现在也无力雇用任何新人 即使进行微小的更改 也需要固件人员在非常低的级别上进行修改 我一直在为 FreeR

随机推荐

  • [简版] Linux搭建SAMBA文件共享服务

    SMB服务搭建 更多参数含义参考链接 常用配置 安装samba span class token comment Ubuntu span span class token function sudo span span class toke
  • STM32 HAL库详解

    STM32 HAL库整体总结 STM32 之二 HAL库详解 及 手动移植 本篇博客是对以上参考资源的一个二次总结与整理 1 HAL库文件结构 对于开发人员而言 xff0c 首先要清楚 HAL 库的文件结构 根据文件类型可认为以下两大类 x
  • STM32 HAL库学习(四):DMA之串口空闲中断

    STM32CubeMX 配置实现参考这里 1 串口空闲中断 1 1 UART DMA方式接收数据 STM32串口使用DMA方式接收数据可以减小CPU的开销 对于接收定长数据 xff0c 可以将DMA接收缓冲区的长度设定为待接收数据的长度 x
  • Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案

    Android Studio 启动模拟器出现 34 Timed out after 300seconds waiting for emulator to come online 34 解决方案 参考文章 xff1a xff08 1 xff0
  • 结构体中的位定义

    1 结构体位定义 在工作中 xff0c 经常遇到按位 xff08 bit xff09 定义结构体 的情况 由于一个字节有8个位 xff0c 这时 xff0c 程序员往往对bit的位置产生困惑 现在给出2个例子 xff0c 来说明位的定义次序
  • 蓝牙基础(三):蓝牙协议栈总体认知

    蓝牙基础 xff08 三 xff09 xff1a 蓝牙协议栈总体认知 0 前言 初入门经典蓝牙学习 xff0c 网上资料参差不齐 xff0c 本博客旨在整理自己的一些总结内容 xff0c 建立整体功能认识 xff0c 以便后续深入学习 1
  • FreeRTOS学习(四)任务调度与切换

    文章目录 1 任务调度2 任务切换2 1 SVC 和 PendSV2 2 上下文2 3 切换场景2 4 PendSV Handler 3 总结 1 任务调度 在建立完任务后紧接着调用任务调度函数 xff0c 便会使系统运行起来 span c
  • FreeRTOS学习(五)队列与信号量

    文章目录 1 队列1 1 队列特性1 2 队列创建1 2 1 接口函数1 2 2 内存占用1 2 3 创建过程分析 1 3 入队与出队1 3 1 队列项入队1 3 1 队列项出队 2 信号量2 1 二值信号量2 2 计数型信号量2 3 互斥
  • FreeRTOS学习(六)时间管理

    文章目录 1 延时函数1 1 vTaskDelay 1 2 vTaskDelayUntil 1 3 系统时钟节拍 2 软件定时器2 1 定时器概述2 2 定时器 API 3 总结 1 延时函数 当任务需要调用延时函数延时时 xff0c 任务
  • C语言 sscanf库函数

    目录 1 函数描述2 函数应用2 1 基础应用2 2 高级应用 1 函数描述 xff08 1 xff09 函数功能 xff1a 通常被用来解析并转换字符串 xff0c 从str指定的字符串读取数据 xff0c 并根据参数format字符串来
  • C语言 文件读写

    目录 1 文件打开与关闭1 1 打开文件 fopen 1 2 关闭文件 fclose 2 读取文件2 1 fgetc 2 2 fgets 2 3 fscanf 3 写入文件3 1 fputc 3 2 fputs 3 3 fprintf 1
  • C语言 条件编译

    目录 1 if elif else endif 2 ifdef else endif 3 ifndef else endif 4 三者区别 根据不同情况编译不同代码 产生不同目标文件的机制 xff0c 称为条件编译 条件编译是预处理程序的功
  • yolo 学习系列(三):训练参数与网络参数

    yolo 学习系列 xff08 三 xff09 xff1a 训练参数与网络参数 手把手教你做目标检测 xff08 YOLO SSD xff09 视频链接 1 训练参数 博主在使用 yolov2 tiny voc 训练 人 这一类目标物体时
  • Caffe 学习系列(七):MobileNet-YOLO 安装与训练

    Caffe 学习系列 xff08 七 xff09 xff1a MobileNet YOLO 安装与训练 基于darknet实现mobilenet 基于darknet框架实现DepthwiseConvolutional层 深度学习 xff08
  • 完美解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题

    完美解决api ms win crt runtime l1 1 0 dll 丢失问题 参考文章 xff1a xff08 1 xff09 完美解决api ms win crt runtime l1 1 0 dll 丢失问题 xff08 2 x
  • Moveit!入门——古月居机械臂开发笔记(一)

    Moveit 入门 古月居机械臂开发笔记 xff08 一 xff09 引言Moveit xff01 与机械臂控制1 创作机械臂模型2 生成配置文件3 如何使用Moveit xff01 实现机械臂仿真 xff08 gazebo xff09 完
  • 数据处理:Excel读取txt文本

    数据处理 xff08 一 xff09 xff1a Excel读取txt文本 1 1 任务需求 txt 文本为四列数据 xff0c 以空格为分隔符号 xff0c 现导入 Excel 中 1 2 实现步骤 新建 excel 文件点击 数据 来自
  • Raspberrypi 3 系统备份还原, 基于最小系统镜像实现

    Raspberrypi 3 备份还原系统 一 为什么要备份系统 xff1f 1 经常在树莓派上调试程序 xff0c 安装各种软件 xff0c 越来越多的库和程序的安装带来的系统更改几乎是不可逆的 xff0c 一旦某个程序或者驱动出现问题 x
  • linux 内核链表

    linux内核中大量使用如下数据结构实现双向链表 xff1a struct list head struct list head next prev 如果需要有某种数据结构的双向队列 xff0c 就在这种结构内部放一个list head数据
  • FreeRTOS任务基础知识总结

    1 单任务系统 前后台系统 xff1a 中断服务函数为前台程序 xff0c 大循环while 1 作为后台程序 前后台系统的实时性差 xff0c 但是前后台系统简单 xff0c 资源消耗少 2 FreeRTOS是一种抢占式的实时多任务系统