FreeRTOS入门

article/2025/4/27 9:38:26

目录

一、简介

二、堆的概念

三、栈的概念

四、从官方源码中精简出第一个FreeRTOS程序

五、修改官方源码增加串口打印

一、简介

FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。

由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。

作为双系统RTOS并且免费开源可裁剪,所以市场占有率很高。常见的双系统RTOS还有RT-Thread纯国产且免费开源。

二、堆的概念

堆就是一块空闲的内存,内核来管理他,我们用的时候申请不用就释放它。

char __buf[1024];
int pos = 0;void *my_malloc(int size)
{int old_pos = pos;pos += size;return &__buf[old_pos];
}void my_free(void *buf)
{/*  err */
}	int main ()
{//char ch = 65;int i;char *buf = my_malloc(100);//unsigned char uch = 200;for(i = 0; i < 26 ; i++ )buf[i] = 'A' + i;return 0;
}

模拟一个申请堆的过程

 SystemInit显示这个没定义是因为没加入一个文件,不要把启动文件注释掉

 

debug报错,因为没有硬件所以选择使用模拟器

 打两个断点。

 

三、栈的概念

栈是RTOS的核心

栈有保护现场的作用,在前面学ARM架构的时候已经和细致的用程序介绍了。操作系统其实都是基于栈的,每个任务都有自己的栈,任务是操作系统的基本单位。栈中会保存LR寄存器和局部变量的值。

四、从官方源码中精简出第一个FreeRTOS程序

我用的韦东山老师的git库里的源码,也可以从官网下载

 🛠Git简明教程 — 百问网资料下载中心 3.0 文档

这有windows上的gitbash的教程会这点就够了

 还有一个tools文件是和亚马逊有关的文件我们不需要也把他删掉

还有剩下的和M3架构MKD5无关的也都可以删掉,精简后不超过10MB具体精简过程可以去B站

五、修改官方源码增加串口打印

我们学习使用的是Keil仿真所以需要增加串口打印,并把LCD显示、定时器、flash等功能删除

右下角就是仿真的串口

我们创建两个打印任务。分成两个串口看着像是同时再进行。其实我们知道他是交替进行的。

,让这两个任务使用一个串口就能看出来他是交替进行的。


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

相关文章

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是用于变换数据的首选方法&#xff0c;也可以进行可视化&#xff0c;但它的性质&#xff08;先旋转然后减少方向&#xff09;限制了有效性。 流行学习算法&#xff1a;是一类用于可视化的算法&#xff0c;它允许进行更复杂的映射&#xff0c;通常也可以给出更好的可视化。t-…

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

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

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

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

流行-Manifold学习理解与应用

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

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

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

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

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

流行学习,比较好的一篇博客

转载自&#xff1a;https://blog.csdn.net/sinat_32043495/article/details/78997758 嵌入在高维空间的低维流形 流形&#xff1a;局部具有欧几里得空间性质的空间 1.较好的描述转载 作者&#xff1a;暮暮迷了路 链接&#xff1a;https://www.zhihu.com/question/2401548…

深度学习—近年来流行的卷积神经网络(一)

近年来流行的卷积神经网络 1. 回顾与目标2. 近年来流行的卷积神经网络2.1 VGGNet2.1.1 感受野的概念2.1.2 感受野的计算 2.2 GooleNet2.3 ResNet 3. 结尾参考资料 1. 回顾与目标 前面几讲&#xff0c;我们以LeNet和AlexNet为例&#xff0c;详细讲解了卷积神经网络的结构。从20…

流行学习常用算法

Isomap&#xff1a;等距映射。前提假设为低维空间中的欧式距离等于高维空间中的侧地线距离&#xff0c;当然该算法具体实施时是高维空间中较近点之间的测地线距离用欧式距离代替&#xff0c;较远点距离用测地线距离用最短路径逼近。 LLE:局部线性嵌入。前提假设是数据所在的低维…

流行学习与拉普拉斯变换的推导

参考&#xff1a;拉普拉斯矩阵 参考&#xff1a;流行学习

流行学习初步理解

一. 流形学习的英文名为manifold learning。其主要思想是把一个高维的数据非线性映射到低维&#xff0c;该低维数据能够反映高维数据的本质&#xff0c;当然有一个前提假设就是高维观察数据存在流形结构&#xff0c;其优点是非参数&#xff0c;非线性&#xff0c;求解过程简单。…

流行学习简单入门与理解

最近博主再看西瓜书第十三章半监督学习&#xff0c;文章中作者提到需要少量查询的主动学习、K-means簇的聚类&#xff0c;以及流行学习。对于流行学习&#xff0c;博主也是第一次接触&#xff0c;下面我们来简单学习和理解一下流行学习。 1. 半监督学习 SSL的成立依赖于模型假…

机器学习----流行学习(manifold learning)的通俗理解

流形学习&#xff08;manifold learning&#xff09;是一类借鉴了拓扑流行概念的降维方法&#xff0c;在降维时&#xff0c;若低维流行嵌入到高维空间中&#xff0c;则数据样本在高维空间的分布虽然看上去十分复杂&#xff0c;但在局部上仍具有欧式空间&#xff08;对现实空间的…

流行学习Manifold Learning

文章目录 1、流行学习前言&#xff1a;2、流形学习的概念流形的概念&#xff1a;流行学习的概念&#xff1a; 3、流形学习的分类4、高维数据降维与可视化5、基本问题和个人观点6、参考文献 1、流行学习前言&#xff1a; 流形学习是个很广泛的概念。这里我主要谈的是自从2000年…

关于nn.embedding的理解

import torch.nn as nn nn.Embedding(num_embeddings, embedding_dim, padding_idxNone, max_normNone, norm_type2, scale_grad_by_freqFalse, sparseFalse)参数解释 num_embeddings (python:int) – 词典的大小尺寸&#xff0c;比如总共出现5000个词&#xff0c;那就输入500…

深究embedding层

关于embedding层&#xff0c;贴出一些很好的链接&#xff0c;以供备忘与分享。 http://blog.sina.com.cn/s/blog_1450ac3c60102x79x.html https://blog.csdn.net/sjyttkl/article/details/80324656 https://blog.csdn.net/jiangpeng59/article/details/77533309 https://juejin…

一文搞懂 Embedding !

这篇文章把embedding单独提出来,梳理一下embedding在推荐系统中的应用。以下内容主要从深度学习方法和传统的协同过滤方法两个方面加深和理解在推荐系统领域对embedding的认识,详细解读下“embedding”这一重要思想。 什么是Embedding? Embedding(嵌入)是拓扑学里面的词…

5、Embedding

本文作为个人笔记引用于&#xff1a; https://blog.csdn.net/weixin_42078618/article/details/82999906 https://blog.csdn.net/weixin_42078618/article/details/84553940 https://www.jianshu.com/p/63e7acc5e890 简介 假设&#xff0c;我们中文&#xff0c;一共只有10个字…