基于STM32F103的FreeRTOS系列(四)·FreeRTOS资料获取以及简介

news2024/11/24 20:02:08

目录

1.  FreeRTOS简介

1.1  FreeRTOS介绍

1.2  为何选择FreeRTOS

1.3  FreeRTOS资料获取

1.3.1  官网下载

1.3.2   Github下载

1.3.3  托管网站下载

1.4  FreeRTOS的编程风格

1.4.1  数据类型

1.4.2  变量名

1.4.3  函数名

1.4.4  宏


1.  FreeRTOS简介

1.1  FreeRTOS介绍

FreeRTOS是一个可裁剪的小型RTOS系统,其特点包括:

① FreeRTOS 的内核支持抢占式,合作式和时间片调度。

② SafeRTOS 衍生自 FreeRTOS,SafeRTOS 在代码完整性上相比 FreeRTOS更胜一筹。

③ 提供了一个用于低功耗的 Tickless 模式。

④ 系统的组件在创建时可以选择动态或者静态的 RAM,比如任务、消息队列、信号量、软件定时器等等。

⑤ 已经在超过 30 种架构的芯片上进行了移植。

⑥ FreeRTOS-MPU 支持 Corex-M 系列中的 MPU 单元,如 STM32F407.

⑦ FreeRTOS 系统简单、小巧、易用,通常情况下内核占用 4k-9k 字节的空间。

⑧ 高可移植性,代码主要 C 语言编写。

⑨ 支持实时任务和协程(co-routines 也有称为合作式、协同程序,我在这里使用的均成为协程)。

1.2  为何选择FreeRTOS

① 开源和免费:FreeRTOS是开源的实时操作系统,遵循MIT许可证,可以免费获取和使用。这使得它成为许多嵌入式开发者和企业的首选,特别是在成本和许可证限制方面较为敏感的项目中。

② 轻量级和高效:FreeRTOS设计精简,专注于提供基本的实时调度和任务管理功能,适合资源有限的嵌入式系统。它的内核非常小巧,具有低的内存占用和快速的上下文切换时间,能够在各种处理器架构上高效运行。

③ 广泛的架构支持:FreeRTOS支持多种处理器架构和开发板,包括ARM Cortex-M,ESP32,PIC,以及多个仿真器和开发板,这使得它在不同项目和硬件平台上都能得到广泛应用。

④ 丰富的特性和生态系统:尽管FreeRTOS本身非常轻量,但它提供了许多丰富的特性,如任务管理、消息队列、信号量、软件定时器等,可以满足大多数嵌入式系统的实时需求。同时,FreeRTOS拥有活跃的社区和丰富的生态系统,提供了许多额外的组件和驱动程序,可以加速开发过程并提供可靠的支持。

⑤ 成熟和可靠性:FreeRTOS经过多年的发展和使用,在工业和商业应用中已被广泛验证和采用,具有高度的成熟性和可靠性,适合要求高可靠性和稳定性的应用场景。

⑥ 易于学习和使用:FreeRTOS的API设计简洁清晰,易于理解和使用。它提供了详细的文档和示例,对于初学者和经验丰富的开发者都是友好的选择。

1.3  FreeRTOS资料获取

1.3.1  官网下载

官网下载链接:FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensionsFreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensionsFreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions

手动输入链接:www.freertos.org 

1.3.2   Github下载

Github下载:GitHub - FreeRTOS/FreeRTOS: 'Classic' FreeRTOS distribution. Started as Git clone of FreeRTOS SourceForge SVN repo. Submodules the kernel.

 

1.3.3  托管网站下载

FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions

        在该网站可以找到,以前发行的版本: 

        找到自己想要下载的版本,点击进入如下界面:

        其中两个文件均可下载。

注意:以上文件下载完后,我试了一下,进行解压的话,会提示文件过多,解压不了,我试了另一台电脑上面用的360解压的软件给解压出来了,然后我准备上传到百度网盘,发现由于文件过多,上传和下载速度也是非常感人。现在没有好的解决办法,后续发现好的解决办法会发到:FreeRTOS_时光の尘的博客-CSDN博客

1.4  FreeRTOS的编程风格

1.4.1  数据类型

        FreeRTOS对C语言中的一些数据类型的命名,进行了重定义,以下是部分:

1.4.2  变量名

        比如char型变量的前缀是c, short型变量的前缀是s, long型变量的前缀是1, portBASE_TYPE类型变量的前缀是x。还有其他的数据类型,比如数据结构,任务句柄,队列句柄等定义的变量名的前缀也是 x。

        如果一个变量是无符号型的那么会有一个前缀 u,如果是一个指针变量则会有一个前缀 p。因此,当我们定义一个无符号的 char 型变量的时候会加一个 uc前缀,当定义一个char型的指针变量的时候会有一个pc前缀。

1.4.3  函数名

        如果是私有的函数则会加一个prv (private)的前缀。

①vTaskPrioritySet()函数的返回值为 void型,在task.c这个文件中定义。

②xQueueReceive()函数的返回值为 portBASE_TYPE 型,在 queue. c这个文件中定义。

③vSemaphoreCreateBinary()函数的返回值为 void型,在semphr.h 这个文件中定义。

1.4.4  宏

FreeRTOS_时光の尘的博客-CSDN博客

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

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

相关文章

IEC104转BACnet网关:实现电力监控与楼宇自动化的无缝对接

在电力监控和楼宇自控领域,IEC104和BACnet作为两种重要的通信协议扮演着重要的角色。随着不同系统之间的数据交换与集成需求的不断增长,深圳市钡铼技术有限公司推出IEC104转BACnet网关来实现这两种协议之间的无缝转换,助力电力监控和楼宇自控…

如何知道一个字段在selenium中是否可编辑?

这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。 我们如何知道我们是否可以编辑字段?“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性,则无法编辑或操作该元素或字段。 因此,如果我们找到一…

3.5-RNN文本生成

1语言模型生成文本的顺序 前面我们已经能够实现使用下图的LSTM网络进行语言建模; 对于一个已经在语料库上学习好的LSTM模型;如果语料库就只是you say goobye and i say hello;那么当把单词i输入到模型中,Time xxx层的第一个LSTM…

⌈ 传知代码 ⌋ 深度学习革新音乐转录

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

SpringBoot上传文件大小超出范围捕获异常

文件上传中,可以限定文件大小,防止用户上传过大的文件,但是出现异常会报错,不够优雅 这里做异常捕获,然后自定义提示文字,可以更加优雅的解决文件上传超出限制报异常 /*** 上传文件超出大小限制异常 适用于…

微信公众号获取用户openid(PHP版,snsapi_base模式)

微信公众号获取用户openid的接口有2个:snsapi_base、snsapi_userinfo 详情见微信公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 本文介绍用PHP方式调用snsapi_base接口获取微信用户…

Godot入门 02玩家1.0版

添加Node2D节点,重命名Game 创建玩家场景,添加CharacterBody2D节点 添加AnimatedSprite2D节点 从精灵表中添加帧 选择文件 设置成8*8 图片边缘模糊改为清晰 设置加载后自动播放,动画循环 。动画速度10FPS,修改动画名称idle。 拖动…

Spark实时(六):Output Sinks案例演示

文章目录 Output Sinks案例演示 一、​​​​​​​File sink 二、​​​​​​​​​​​​​​Memory Sink 三、​​​​​​​​​​​​​​Foreach Sink 1、​​​​​​​foreachBatch 2、​​​​​​​​​​​​​​foreach Output Sinks案例演示 当我们对流式…

HarmonyOS NEXT星河版零基础入门到实战

文章目录 一、HarmonyOS NEXT介绍学习内容1、鸿蒙APP开发2、能力套件开发3、全场景开发适合人群 持续更新中✒️总结 一、HarmonyOS NEXT介绍 放弃安卓框架之后,HarmonyOS NEXT成为真正独立于安卓、iOS的操作系统,堪称是一场史无前例的脱胎换骨。在其众多…

模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域

Vue.js 是一个流行的 JavaScript 框架,因此,确保其组件按预期工作至关重要:有效,更重要的是,可靠。模拟依赖项是最有效的测试方法之一,我们将在本文中发现。 模拟依赖项的必要性 模拟依赖项是一种对测试施加…

大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

亚信安慧AntDB-M负载均衡

负载均衡是分布式系统中常用的技术,主要是将工作任务均衡分布到系统的各个资源点上,可以充分利用系统资源。 AntDB-M分布式内存数据库节点角色可以分为管理节点(MN)、计算节点(CN)和数据节点(DN)三种。管理节点收到客户端连接请求后,会经由负…

【学习记录】锚框

主要解释程序代码,具体解析在代码中进行标注 锚框,具体看见网址https://zh-v2.d2l.ai/chapter_computer-vision/anchor.html#iou 对应程序解析:https://fkjkkll.github.io/2021/11/23/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8BSSD/#more 目录…

数据结构:(1)线性表

一、基本概念 概念:零个或多个数据元素的有限序列 元素之间是有顺序了。如果存在多个元素,第一个元素无前驱,最后一个没有后继,其他的元素只有一个前驱和一个后继。 当线性表元素的个数n(n>0&am…

UE4 UnrealPak加密功能(配置AES encrypt key)

本文的重点在于如何使用UnrealPak的加密功能,以及相关的UE4源代码学习。本文参考了:https://www.cnblogs.com/shiroe/p/14803859.html 。 设置密钥 在编辑、项目设置中找到下面栏目,并点击“生成新的加密密钥”,就可以为Unreal P…

K210视觉识别模块学习笔记7:多线程多模型编程识别

今日开始学习K210视觉识别模块: 图形化操作函数 亚博智能 K210视觉识别模块...... 固件库: canmv_yahboom_v2.1.1.bin 训练网站: 嘉楠开发者社区 今日学习使用多线程、多模型来识别各种物体 这里先提前说一下本文这次测试实验的结果吧:结果是不太成…

ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH?

ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH? 目录 ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH? 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/61780…

详解程序的预处理与编译与连接

文章目录 1.程序的翻译环境和执行环境2.详解编译链接2.1 翻译环境2.2 编译本身也分为几个阶段2.3 运行环境 3.预处理详解3.1 预处理符号3.2 \#define3.2.1 \#define 定义标识符3.2.2 \#define定义宏3.2.3 \#define 替换规则 3.2.4 \#和\#\#3.2.5 带副作用的宏参数3.2.6 宏和函数…

数据结构之判断二叉树是否为搜索树(C/C++实现)

文章目录 判断二叉树是否为搜索树方法一:递归法方法二:中序遍历法总结 二叉树是一种非常常见的数据结构,它在计算机科学中有着广泛的应用。二叉搜索树(Binary Search Tree,简称BST)是二叉树的一种特殊形式&…

【VUE】封装一个追随鼠标的漂浮组件框架

红色箭头代表鼠标位置&#xff0c;蓝色区域跟随鼠标出现&#xff0c;鼠标进行其他操作的时候&#xff0c;蓝色区域隐藏。 vue全码 <template><divmousemove"updatePosition"mouseleave"hideDiv"class"container":style"{ positi…