FreeRTOS系列|FreeRTOS简介

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获取任务句柄

在这里插入图片描述

  • 12
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安迪西嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值