FreeRTOS简介

1. RTOS简介

RTOS全称为 Real Time Operation System,即实时操作系统。RTOS强调的是实时性,又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,不允许超时;而软实时里对处理过程超时的要求则没有很严格。RTOS的核心就是任务调度

RTOS的多个工作流如下图示:

RTOS工作原理如下图示:

RTOS通用组件如下图示:


RTOS的特点:

  • 更好的事件实时处理机制
  • 更高效利用CPU资源
  • 通用的任务管理框架

2. FreeRTOS介绍

FreeRTOS是RTOS的一种,尺寸非常小,可运行于微控制器上。微控制器是尺寸小,资源受限的处理器,它在单个芯片上包含了处理器本身、用于保存要执行的程序的只读存储器(ROM或Flash)、所执行程序需要的随机存取存储器(RAM),一般情况下程序直接从只读存储器执行

微控制器用于深度嵌入式应用,一般都有非常明确、专门的工作。尺寸的限制以及专用的终端应用等性质,令其很少能使用完整的RTOS实现。因此FreeRTOS仅为内核提供了实时调度功能、任务间通信、时序和同步原语。更准确地说,它是一个实时内核,或实时执行器。命令控制台界面、网络栈等额外的功能可作为附加组件

在实际使用FreeRTOS的时候我们需要根据自已的需求来配置FreeRTOS,不同架构的MCU在使用的时候配置也不同,下面介绍FreeRTOS配置文件详解

  • 内核配置一
参数名称 参数说明
USE_PREEMPTION 定义调度器模式
CPU_CLOCK_HZ 定义CPU的主频
TICK_RATE_HZ 定义系统时钟节拍数
MAX_PRIORITIES 定义可供用户使用的最大优先级数
MINIMAL_STACK_SIZE 定义空闲任务的栈空间大小
MAX_TASK_NAME_LEN 定义任务名最大的字符数
USE_16_BIT_TICKS 系统时钟节拍计数使用TickType_t数据类型定义
IDLE_SHOULD_YIELD 用于使能与空闲任务同优先级的任务
  • 内核配置二
参数名称 参数说明
USE_MUTEXES 用于使能互斥锁
USE_RECURSIVE_MUTEXES 用于使能递归互斥锁
USE_COUNTING_SEMAPHORES 用于使能计数信号量
QUEUE_REGISTRY_SIZE 用于设置可以注册的信号量和消息队列个数
USE_APPLICATION_TASK_TAG 用于使能任务标记
ENABLE_BACKWARD_COMPATIBILITY 用于使能新版本对老版本的兼容特性
USE_PORT_OPTIMISED_TASK_SELECTION 用于优化优先级列表中药执行的最高优先级任务的算法
USE_TICKLESS_IDLE 用于使能tickless低功耗模式
USE_TASK_NOTIFICATIONS 使能任务间直接的消息传递,包括信号量、事件标志组和消息邮箱
  • 内存管理
参数名称 参数说明
MEMORY_ALLOCATION 定义内存分配模式
TOTAL_HEAP_SIZE 定义动态内存分配总长度
HEAP_NUMBER 定义动态内存管理方式
  • 任务运行信息获取配置
参数名称 参数说明
GENERATE_RUN_TIME_STATS 用于使能任务运行状态参数统计
USE_TRACE_FACILITY 使能此配置将添加额外的结构体成员和函数
USE_STATS_FORMATTING_FUNCTIONS 用户配置宏定义 configUSE_TRACE_FACILITY 和configUSE_STATS_FORMATTING_FUNCTIONS都为 1 的时候,将使能函数 vTaskList() 和 vTaskGetRunTimeStats(),如果两者中任何一个为 0,那么这两个函数都将被禁能
  • 软件定时器
参数名称 参数说明
USE_TIMERS 用于使能软件定时器
  • 中断优先级
参数名称 参数说明
LIBRARY_LOWEST_INTERRUPT_PRIORITY 用于配置 FreeRTOS 用到的 SysTick 中断和 PendSV 中断的优先级
LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 定义了受 FreeRTOS 管理的最高优先级中断
  • 函数Include配置
参数名称 参数说明
vTaskPrioritySet 设置任务优先级
uxTaskPriorityGet 获取任务优先级
vTaskDelete 任务删除
vTaskCleanUpResources 清理任务资源
vTaskSuspend 任务挂起
vTaskDelayUntil 任务绝对延时
vTaskDelay 任务延时
xTaskGetSchedulerState 获取调度器状态
xTaskResumeFromISR 在中断中恢复任务
xQueueGetMutexHolder 获取互斥锁持有者
pcTaskGetTaskName 获取任务名称
uxTaskGetStackHighWaterMark 获取任务堆栈信息
xTaskGetCurrentTaskHandle 获取当前任务句柄
eTaskGetState 获取任务状态
xEventGroupSetBitFromISR 在中断中设置事件标志组
xTimerPendFunctionCall 定时器挂起后回调函数
xTaskAbortDelay 终止任务延时
xTaskGetHandle 获取任务句柄

FreeRTOS系列|FreeRTOS简介相关推荐

  1. FreeRTOS系列第2篇---FreeRTOS入门指南

    FreeRTOS可以被移植到很多不同架构的处理器和编译器.每一个RTOS移植都附带一个已经配置好的演示例程,可以方便快速启动开发.更好的是,每个演示例程都附带一个说明网页,提供如何定位RTOS演示工程 ...

  2. (第16-17讲)STM32F4单片机,FreeRTOS中断管理简介【视频笔记、代码讲解】【正点原子】【原创】

    文章目录 视频笔记 实验现象 代码讲解(个人注释) 一个弹幕的问题? PendSV和Systick中断优先级最低? demo函数 定时器函数 视频笔记 老生常谈 老生常谈 老生常谈,FreeRTOS只 ...

  3. beeline安装_Hive 系列 之 简介与安装

    下面是系列文章的目录 (1)hive系列之简介,安装,beeline和hiveserver2 (2)hive系列之基本操作 (3)hive系列之udf (4)hive系列之二级分区和动态分区 (5)h ...

  4. FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)

    源:FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)

  5. 【Proteus+51单片机学习笔记】-51/52系列单片机简介

    0 摘要 本文主要对STC89C52系列单片机进行了简单介绍,对其主要电路进行整理. 1 STC89C52系列单片机简介 STC89C52单片机指令完全兼容传统8051单片机,包括12T和6T两种模式 ...

  6. UUCP系列程序简介

    UUCP系列程序简介 1.UUCP系统概述 UUCP系统是一组程序,完成文件传输,执行系统之间的命令,维护系统使用情况的统计,保护安全.UUCP是UNIX系统最广泛使用的网络实用系统,这其中在两个原因 ...

  7. 目标检测YOLO系列------YOLO简介

    目标检测YOLO系列------YOLO简介 1.为什么会出现YOLO算法 2.YOLO算法会逐渐成为目标检测的主流吗     YOLO以及各种变体已经广泛应用于目标检测算法所涉及到的方方面面,为了梳 ...

  8. Lattice系列FPGA入门相关1(Lattice系列FPGA简介)

    需求说明:Lattice系统FPGA入门 内容       :Lattice系列FPGA简介 来自       :时间的诗 1.为什么Lattice在进入FPGA市场的第一年就能取得这么好的成绩? 我 ...

  9. 第三讲 i.MX系列芯片简介

    第三讲 i.MX系列芯片简介 文章目录 第三讲 i.MX系列芯片简介 一. i.MX 系列处理器 芯片选型 i.MX 6ULL 总览 i.MX 6ULL 特性 i.MX 6ULL 框图 注意 二. A ...

最新文章

  1. 华为鸿蒙去哪里更新,华为鸿蒙OS正式尝鲜版名单更新,升级?还是不升级?
  2. Nginx的配置文件
  3. 设计模式之抽象工厂模式学习笔记
  4. 使用Go语言访问JSON数据(gojsonq)
  5. 上市后首份年报亮眼,快手天花板在哪?
  6. vue 点击倒计时 ajax 封装
  7. 矩阵指数 matlab,矩阵指数 - MATLAB Simulink Example - MathWorks 中国
  8. redis概念、做什么及其应用场景
  9. matlab求傅里叶级数展开式_明明学过积分和三角函数就能秒理解傅里叶变换.........
  10. Caddy – 方便够用的 HTTPS server 新手教程
  11. mysql数据库需求分析工具_一份全面的“数据库设计需求分析”是怎样的?
  12. css画三角形以及各种图形
  13. ssh框架的构成分析和代码构架小结 .
  14. 孤城内,秋风秋雨抛荒了谁的一怀若水情思?
  15. java框架技术路线 2019.10.3
  16. 工业革命4.0是光和算的革命,时代呼唤硬科技!
  17. 【仿真】后仿真中的notifier是奏啥滴!
  18. Cylinder Candy(zoj 3866 旋转体体积和表面积)
  19. Redis的Java客户端
  20. H5视频播放器--西瓜视频播放器

热门文章

  1. svg图编码成base64实现图片效果
  2. 图数据库—Neo4j使用指南
  3. Android变量longpress,Appium+Python Flick longpress press区别(Android)
  4. oracle左外连接语法,Oracle 左外连接、右外连接、全外连接小总结
  5. 采购订单管理流程:定义、好处和步骤
  6. 【疑问解答】LACP是什么?如何工作?如何配置?
  7. 英语单词词性顺口溜_口诀1 英语的词类
  8. 基于磁盘量身定制,十亿规模高效向量检索方案
  9. js 实现连续播放多条音频文件
  10. 利用python求积分