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获取任务句柄
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值