FreeRTOS是什么(并发)
RTOS(Real Time Operating System,中文就是实时操作系统)
FreeRTOS是一个迷你的实时操作系统内核。
作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为10.4.4版。
FreeRTOS的设计小巧且简易,整个核心代码只有3到4个C文件,为了让代码容易阅读、移植和维护,大部分的代码都是以C语言编写,只有一些函数(多数是架构特定排班副程序)采用汇编语言编写。
FreeRTOS移植
【FreeRTOS】FreeRTOS移植stm32详细步骤介绍_freertos 202212.01下载-CSDN博客
1、添加RTOS源码到Keil工程
2、添加head_4.c到Keil工程
3、添加port.c到Keil工程
4、添加头文件路径
5、添加FreeRTOSConfig.h
6、修改FreeRTOSConfig.h配置文件,直到工程编译无错误
前后台
前后台:应用程序是一个无限的循环,循环中调用相应的函数完成所需的处理。有时候我们也需要中断中完成一些处理。相对于多任务系统而言,这个就是单任务系统,也称作前后台系统,中断服务函数作为前台程序,大循环while(1)作为后台程序。
任务(Task)是什么
多任务系统会把一个大问题(应用)“分而治之”,把大问题划分成很多个小问题,逐步的把小问题解决掉,大问题也就随之解决了,这些小问题可以单独的作为一个小任务来处理。这些小任务是并发处理的,注意,并不是说同一时刻一起执行很多个任务,而是由于每个任务执行的时间很短,导致看起来像是同一时刻执行了很多个任务一样。
优先级划分策略
平均划分:一种简单的任务优先级划分策略是平均划分,即将可用的优先级范围均匀地分配给各个任务。这样的划分可以确保每个任务都有相对平等的机会被调度执行。
优先级分层:另一种策略是根据任务的功能和紧急程度将优先级进行分层。紧急程度较高的任务分配较高的优先级,确保这些任务更早地得到执行。
动态调整优先级: FreeRTOS允许在运行时动态调整任务的优先级。通过使用vTaskPrioritySet函数,可以根据实时需求在任务执行过程中调整其优先级。
创建任务
pxTaskCode:指向任务函数的指针。注意,任务函数不能返回(即死循环)。
pcName:任务名,字符串
usStackDepth:栈深,即任务的栈大小(单位是字,1字=4字节)
pvParameters:任务的参数指针
uxPriority:任务的优先级,最低优先级为0,数字越大,优先级越高。
pxCreatedTask:任务的句柄,用于控制任务
任务的一般形式
void Task_Temp(void *pvParameters)
{
int i = 0;while (1) {printf("i: %d\r\n", i++);vTaskDelay(1000);}
}
任务优先级概述
在FreeRTOS中,任务的优先级范围通常从0到(configMAX_PRIORITIES - 1),其中configMAX_PRIORITIES 是用户在FreeRTOS配置中定义的常量。优先级数越大,优先级越高,任务越早被调度执行。
通过合理的任务优先级划分策略,可以有效提高FreeRTOS系统的响应速度和性能。在设计和实现嵌入式系统时,开发者应该根据任务的紧急程度和功能特点选择适当的优先级划分策略,以满足实时性和稳定性的需求。
任务的状态
移植操作系统: