STM32 FreeRTOS系列教程(一)FreeRTOS简介

article/2025/4/27 2:40:27

参考资料:《正点原子STM32F4 FreeRTOS开发手册_V1.1》《野火FreeRTOS 内核实现与应用开发实战—基于STM32》

学习RTOS的意义

当我们进入嵌入式这个领域的时候,往往首先接触的都是单片机编程,单片机编程又
首选51 单片机来入门。这里面说的单片机编程通常都是指裸机编程,即不加入任何RTOS
(Real Time Operating System 实时操作系统)的程序。常用的RTOS 有国外的FreeRTOS、
μC/OS、RTX和国内的FreeRTOS、Huawei LiteOS 和AliOS-Things 等,其中尤以国外开源
且免费的FreeRTOS 的市场占有率最高。
在裸机系统中,所有的程序基本都是自己写的,所有的操作都是在一个无限的大循环
里面实现。现实生活中的很多中小型的电子产品用的都是裸机系统,而且也能够满足需求。
但是为什么还要学习RTOS 编程,偏偏还要整个操作系统进来。一是项目需要,随着产品
要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得
更加复杂,如果想降低编程的难度,我们可以考虑引入RTOS 实现多任务管理,这是使用
RTOS 的最大优势。

FreeRTOS编程风格

变量名

在FreeRTOS 中,定义变量的时候往往会把变量的类型当作前缀加在变量上,这样的
好处是让用户一看到这个变量就知道该变量的类型。比如char 型变量的前缀是c,short 型
变量的前缀是s,long 型变量的前缀是l, portBASE_TYPE 类型变量的前缀是x。还有其他
的数据类型,比如数据结构,任务句柄,队列句柄等定义的变量名的前缀也是x。
如果一个变量是无符号型的那么会有一个前缀u,如果是一个指针变量则会有一个前
缀p。因此,当我们定义一个无符号的char 型变量的时候会加一个uc 前缀,当定义一个
char 型的指针变量的时候会有一个pc 前缀。

函数名

函数名包含了函数返回值的类型、函数所在的文件名和函数的功能,如果是私有的函
数则会加一个prv(private)的前缀。特别的,在函数名中加入了函数所在的文件名,这大
大的帮助了用户提高寻找函数定义的效率和了解函数作用的目的,具体的举例如下:

  1. vTaskPrioritySet()函数的返回值为void 型,在task.c 这个文件中定义。
  2. xQueueReceive()函数的返回值为portBASE_TYPE 型,在queue.c 这个文件中定义。
  3. vSemaphoreCreateBinary()函数的返回值为void 型,在semphr.h 这个文件中定义。

宏均是由大写字母表示,并配有小写字母的前缀,前缀用于表示该宏在哪个头文件定
义,部分举例具体见表格
在这里插入图片描述


http://chatgpt.dhexx.cn/article/FfMEiOML.shtml

相关文章

FreeRTOS使用教程(配合CubeMX)

FreeRTOS使用教程(配合CubeMX) 一、CubeMX配置 在选择后单片机芯片后,在Middleware中选择FREERTOS的CMSIS_V1版本即可在工程开启FreeRTOS。 关于FreeRTOS的具体配置一般集中在Kernel Setting中。具体参数一般可以默认,有特殊需求…

【STM32】STM32CubeMX使用FreeRTOS教程1----定时器学习

【STM32】STM32CubeMX使用FreeRTOS教程1----定时器学习 前言 本教程将对应外设原理,HAL库、STM32CubeMX和FreeRTOS结合在一起讲解,分析学习过程中遇到的问题和一些注意事项。 知识概括: SMT32定时器原理 STM32CubeMX创建定时器例程 HAL库…

[FreeRTOS系列教程]学习FreeRTOS前的准备工作-----初学者必看

转自:http://bbs.armfly.com/read.php?tid1552 转载说明:本文仅为转载,下面有几位同学询问对应的教程,教程请参考下面的链接,是以帖子的形式分章节说明。 http://bbs.armfly.com/thread.php?fid14&type29&…

FreeRTOS基本教程零:STM32 FReeRTOS 移植流程

一、资料准备 FreeRTOS源码下载地址: https://github.com/FreeRTOS/FreeRTOShttps://github.com/FreeRTOS/FreeRTOS我移植的是FreeRTOSv9.0.0 stm32裸机程序: 二、FreeRTOS目录 一共有三个文件夹 其中Demo文件夹中是FreeRTOS的例程,Licen…

基于STM32的实时操作系统FreeRTOS移植教程(手动移植)

前言:此文为笔者FreeRTOS专栏下的第一篇基础性教学文章,其主要目的为:帮助读者朋友快速搭建出属于自己的公版FreeRTOS系统,实现后续在实时操作系统FreeRTOS上的开发与运用。操作系统的学习与运用可以说是每位嵌入式开发工程师必须…

STM32F103--移植FreeRTOS完整教程

最近按照正点原子教程开始学习FreeRTOS,发现其手册的移植教程中有些地方可能不是那么详细,在此基于正点原子做一期最完整的FreeRTOS移植教程给大家。 小b将本次教程整理的资料放在网盘,以下链接供各位小伙伴下载和学习: 链接&…

FreeRTOS 正点原子教程学习笔记

正点原子视频教程 FreeRTOS(教程非常详细) 小知识 如果创建了任务却完全空着,没有while(1){延时}的话,整个程序会卡住,其他正常的任务无法运行。如果任务里单单有赋值之类的操作也会卡死在这个任务&#…

FreeRTOS入门教程(堆和栈)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、FreeRTOS操作系统介绍二、堆1.概念介绍2.简单实现 三、栈总结 前言 本篇文章正式学习FreeRTOS操作系统,我打算编写一系列文章带大家轻松快速入…

FreeRTOS移植到STM32

一、找一个STM32的裸机工程模板 我们以STM32F103裸机程序为例 随便找的一个裸机程序 二、去官网上下载FreeRTOS V9.0.0 源码 在移植之前,我们首先要获取到 FreeRTOS 的官方的源码包。这里我们提供两个下载 链 接 , 一 个 是 官 网 : http:…

韦东山freeRTOS系列教程之【第一章】FreeRTOS概述与体验

文章目录 教程目录1.1 FreeRTOS目录结构1.1 FreeRTOS目录结构1.2 核心文件1.3 移植时涉及的文件1.4 头文件相关1.4.1 头文件目录1.4.2 头文件 1.5 内存管理1.6 Demo1.7 数据类型和编程规范1.7.1 数据类型1.7.2 变量名1.7.3 函数名1.7.4 宏的名 1.8 安装Keil1.8.1 下载Keil1.8.2…

freeRTOS中文实用教程1

资料转载出处 https://www.cnblogs.com/smartjourneys/p/7073450.html 1.前言 FreeRTOS是小型多任务嵌入式操作系统,硬实时性。本章主要讲述任务相关特性及调度相关的知识。 任务的总体特点 任务的状态 (1)任务有两个状态,运行态…

FreeRTOS入门

目录 一、简介 二、堆的概念 三、栈的概念 四、从官方源码中精简出第一个FreeRTOS程序 五、修改官方源码增加串口打印 一、简介 FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、…

freeRTOS系列教程之【第一章】FreeRTOS概述与体验

文章目录 教程目录1.1 FreeRTOS目录结构1.1 FreeRTOS目录结构1.2 核心文件1.3 移植时涉及的文件1.4 头文件相关 1.4.1 头文件目录1.4.2 头文件 1.5 内存管理1.6 Demo1.7 数据类型和编程规范 1.7.1 数据类型1.7.2 变量名1.7.3 函数名1.7.4 宏的名 1.8 安装Keil 1.8.1 下载Keil1.…

【机器学习】3-4-2 流行学习

#3-4-2流行学习 import mglearn import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.datasets import load_breast_cancer from sklearn.datasets import make_moons from sklearn.datasets import make_blobs from sklearn.datasets impor…

【机器学习】(十八)用t-SNE进行流行学习:手写数字分类

PCA是用于变换数据的首选方法,也可以进行可视化,但它的性质(先旋转然后减少方向)限制了有效性。 流行学习算法:是一类用于可视化的算法,它允许进行更复杂的映射,通常也可以给出更好的可视化。t-…

用Python实现流行机器学习算法

对于此库的Octave/MatLab版本,请检查machine-learning-octave项目。 该库包含在Python中实现的流行机器学习算法的示例,其中包含数学背后的解释。 每个算法都有交互式Jupyter Notebook演示,允许您使用训练数据,算法配置&#xff0…

【流行学习】局部线性嵌入(Locally Linear Embedding)

一、前言 局部线性嵌入(LLE)假设数据在较小的局部是线性的,也就是说,某一个样本可以由它最近邻的几个样本线性表示,离样本远的样本对局部的线性关系没有影响,因此相比等距映射算法,降维的时间复…

流行-Manifold学习理解与应用

流行-Manifold【1】 流形,也就是 Manifold 。 1. 比较好的形象理解 流形学习的观点是认为,我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的,即这些数据所在的空间是“嵌入在高维空间的低维流形。”。由于数据内部特征的限制&a…

【流行学习】拉普拉斯映射(Laplacian Eigenmaps)

一、前言 拉普拉斯特征映射是一种基于图的降维算法,它希望在原空间中相互间有相似关系的点,在降维后的空间中尽可能的靠近,从而在降维后仍能保持原有的数据结构信息。 二、主要步骤 拉普拉斯特征映射通过构建邻接矩阵为 W W W(…

7个流行的强化学习算法及代码实现

目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。 这些算法已被用于在游戏、机器人和决策制定等各种应用中,并且这些流行的算法还在不断发展和改进,本文我们将对其做一个简单的介绍。 1、Q-learning Q-learning&#xff1…