FreeRTOS(随便写写,项目用到)

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系统的响应速度和性能。在设计和实现嵌入式系统时,开发者应该根据任务的紧急程度和功能特点选择适当的优先级划分策略,以满足实时性和稳定性的需求。

任务的状态

 

 移植操作系统:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CI/CD与容器编排的结合

确实,对于需要多个步骤或阶段的工作流,Kubernetes原生并没有内建的工作流引擎,但可以通过以下几种方式来实现复杂的工作流程: Kubernetes Jobs:对于需要运行到完成的一次性任务,可以使用Kubernetes的Job资源…

HTTPS反向代理的功能和應用全解

HTTPS反向代理是一種特殊類型的伺服器,是在反向代理的基礎上增加了HTTPS的支持,位於客戶端和Web伺服器之間,充當兩者之間的仲介。在這種配置中,所有客戶端請求首先到達反向代理伺服器,然後由該伺服器將請求轉發到適當的Web伺服器。…

citylava:城市场景中VLMs的有效微调

citylava:城市场景中VLMs的有效微调 摘要IntroductionRelated WorkVision-Language ModelsVLMs in Driving Methodology CityLLaVA: Efficient Fine-Tuning for VLMs in City Scenario 摘要 在城市广阔且动态的场景中,交通安全描述与分析在从保险检查到事故预防的各…

蓝牙 | 软件:Git管理高通的ChipCode项目

哈喽大家好,最近发现大家在高通chipcode网站上下载不了代码,小编一直使用git的方式获取新版本代码,没有遇到什么阻碍。于是小编到新主机上尝试下载代码的压缩包和git代码,都遇到了问题。由于压缩包是高通自己处理卡住了&#xff0…

您可以使用WordPress创建的19种网站类型

当人们决定为什么他们应该使用WordPress时,我们经常会被问到“WordPress可以做[空白]吗?答案大多是肯定的。在本文中,我们将向您展示您可以使用WordPress创建的19种不同类型的网站,而无需学习任何编程技巧。 目录 隐藏 1 开始使用…

JavaScript字符串的常用方法

这篇汇总一下,JavaScript中关于字符串常用几个方法:增、删、改和查。 增 字符串的增加操作,实际上就是拼接,也不是直接添加功能,而是创建字符串的一个副本,然后再进行操作。 常见的拼接方法就是&#xf…

CSS---Emmet(二)

一、Emmet语法 Emmet语法是一种用于快速编写HTML和CSS的缩写技术。它允许开发者通过简洁的表达式快速生成复杂的代码结构,极大地提高了编码效率。使用Emmet,你只需要写出一些简短的缩写符号和操作符,然后通过快捷键(通常是Tab键&…

巡检机器人有哪些功能和作用?

在科技如此发达的时代,巡检机器人犹如一位不知疲倦的守护者,悄然走进了我们的生活。它们具备着令人惊叹的功能和作用,成为了保障安全、提高效率的重要力量。那么,巡检机器人功能和作用?下面我们来说说旗晟机器人的几款…

java——嵌套(二)

目录 一:方法的重写(覆盖/覆写) 1. 方法的重写的意义: 2. 重写(overide) 3. 案例 二:继承中构造方法的调用 1. 子类的构造方法会默认调用父类的构造方法; 2. super 关键字调用…

深入理解Go语言并发编程

随着计算机硬件的发展,多核处理器已经成为现代计算机的主流配置。在这样的背景下,并发编程成为了一种必备的技能。Go 语言作为一门先进的编程语言,天生支持并发编程,提供了丰富的并发原语和工具,使得并发编程变得更加容…

设计模式——原型模式(Prototype)

原型模式(Prototype Pattern)是一种创建型设计模式,它允许一个对象通过复制现有的实例来创建新的实例。原型模式的核心思想是使用原型实例来指定要创建的对象的类型,并通过复制这些原型实例来创建新的对象。 原型模式的主要优点包…

Redisson分布式锁全解析:从基础到红锁,锁定高并发解决方案

1. 介绍Redisson和分布式锁的概念 1.1 Redisson简介 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid, IMDG)。它不仅提供了对分布式和可伸缩数据结构的支持,还提供了多种分布式服务,包括但不限于分布式锁、集合、映射、计…

Excel解日期问题

一、日期类型:yyyy/mm/dd **小技巧: (1)快速选中大量数据 鼠标点击要选中的区域的左上角第一个单元格。鼠标拖拽滚动条,找到要选中的区域的最后一行。按住 SHIFT 键,鼠标点击要选中的区域的右下角最后一…

Linux内核--设备驱动(八)网络整理

目录 一、引言 二、网络设备驱动架构 ------>2.1、网络协议接口层 ------------>2.1.1、sk_buff ------>2.2、网络设备接口层 ------------>2.2.1、net_device相关介绍 ------------>2.2.2、中断处理 ------>2.3、源码分析 ------------>2.3.1、…

C#中实现DataGridView数据的优雅Excel之旅(EPPlus)

DataGridView效果图: EXCEL效果图: 代码如下: 首先要引入EPPlus包 可以使用命令行来安装 Install-Package EPPlus 也可以使用NUGet搜索EPPlus来安装 public Homes(){InitializeComponent();ExcelPackage.LicenseContext OfficeOpenXml.LicenseContext…

Unity打开安卓设备不同的设置面板

1,打开安卓设备不同的设置面板,我还贴心的把Android官网的链接放下面了 2,使用也很方便:unity按钮事件上拖这个脚本,注册MyOpenAndroidSettings方法,参数 填 和枚举值相应的数字 // 功能:打开…

Python基础详解三

一,函数的多返回值 def methodReturn():return 1,2x,ymethodReturn() print(x,y) 1 2 二,函数的多种参数使用形式 缺省参数: def method7(name,age,address"淄博"):print("name:"name",age"str(age)&quo…

Golang——IO操作

1. 输入输出的底层原理 终端其实是一个文件(Linux下一切皆文件),相关实例如下: os.Stdin:标准输出的文件实例,类型为*Fileos.Stdout:标准输入的文件实例,类型为*Fileos.Stderr:标准错误输出的文…

出差——蓝桥杯十三届2022国赛大学B组真题

问题分析 该题属于枚举类型&#xff0c;遍历所有情况选出符合条件的即可。因为只需要派两个人&#xff0c;因此采用两层循环遍历每一种情况。 AC_Code #include <bits/stdc.h> using namespace std; string str;//选择的两人 bool ok(){if(str.find("A")!-1…

Colibri for Mac v2.2.0 原生无损音频播放器 激活版

Colibri支持所有流行的无损和有损音频格式的完美清晰的比特完美播放&#xff0c;仅使用微小的计算能力&#xff0c;并提供干净和直观的用户体验。 Colibri在播放音乐时使用极少的计算能力。该应用程序使用最先进的Swift 3编程语言构建&#xff0c;BASS音频引擎作为机器代码捆绑…