当前位置: 首页 > news >正文

FreeRTOS入门

目录

一、简介

二、堆的概念

三、栈的概念

四、从官方源码中精简出第一个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等功能删除

右下角就是仿真的串口

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

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

相关文章:

FreeRTOS入门

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

JVM运行时数据区划分

Java内存空间 内存是非常重要的系统资源&#xff0c;是硬盘和cpu的中间仓库及桥梁&#xff0c;承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略&#xff0c;保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机…...

重装系统一半电脑蓝屏如何解决

小编相信大家在使用电脑或者给电脑重装系统的时候都遇到过电脑蓝屏等等故障问题。最近有用户就遇到了这样一个问题&#xff0c;问小编重装系统一半电脑蓝屏怎么办&#xff0c;那么今天小编就告诉大家重装系统一半电脑蓝屏的解决方法。 工具/原料&#xff1a; 系统版本&#x…...

SpringBoot(tedu)——day01——环境搭建

SpringBoot(tedu)——day01——环境搭建 目录SpringBoot(tedu)——day01——环境搭建零、今日目标一、IDEA2021项目环境搭建1.1 通过 ctrl鼠标滚轮 实现字体大小缩放1.2 自动提示设置 去除大小写匹配1.3 设置参数方法自动提示1.4 设定字符集 要求都使用UTF-8编码1.5 设置自动编…...

springboot整合redis

1.redis的数据类型,一共有5种.后面结合Jedis和redistemplate,以及单元测试junit一起验证  1)字符串  2)hash  3)列表  4)set(无序集合)  5)zset(有序集合) 2.Jedis的使用  a)引入依赖 <!--加入springboot的starter的起步依赖--><dependency><groupId>…...

【Java】Spring Boot下的MVC

文章目录Spring MVC程序开发1. 什么是Spring MVC&#xff1f;1.1 MVC定义1.2 MVC 和 Spring MVC 的关系2. 为什么学习Spring MVC&#xff1f;3. 怎么学习Spring MVC&#xff1f;3.1 Spring MVC的创建和连接3.1.1 创建Spring MVC项目3.1.2 RequestMapping 注解介绍3.1.3 Request…...

【项目精选】 塞北村镇旅游网站设计(视频+论文+源码)

点击下载源码 摘要 城市旅游产业的日新月异影响着村镇旅游产业的发展变化。网络、电子科技的迅猛前进同样牵动着旅游产业的快速成长。随着人们消费理念的不断发展变化&#xff0c;越来越多的人开始注意精神文明的追求&#xff0c;而不仅仅只是在意物质消费的提高。塞北村镇旅游…...

十、Spring IoC注解式开发

1 声明Bean的注解 负责声明Bean的注解&#xff0c;常见的包括四个&#xff1a; ComponentControllerServiceRepository Controller、Service、Repository这三个注解都是Component注解的别名。 也就是说&#xff1a;这四个注解的功能都一样。用哪个都可以。 只是为了增强程序…...

Linux系统GPIO应用编程

目录应用层如何操控GPIOGPIO 应用编程之输出GPIO 应用编程之输入GPIO 应用编程之中断在开发板上测试GPIO 输出测试GPIO 输入测试GPIO 中断测试本章介绍应用层如何控制GPIO&#xff0c;譬如控制GPIO 输出高电平、或输出低电平。应用层如何操控GPIO 与LED 设备一样&#xff0c;G…...

手敲Mybatis-反射工具天花板

历时漫长的岁月&#xff0c;终于鼓起勇气继续研究Mybatis的反射工具类们&#xff0c;简直就是把反射玩出花&#xff0c;但是理解起来还是很有难度的&#xff0c;涉及的内容代码也颇多&#xff0c;所以花费时间也比较浩大&#xff0c;不过当了解套路每个类的功能也好&#xff0c…...

Java -数据结构,【优先级队列 / 堆】

一、二叉树的顺序存储 在前面我们已经讲了二叉树的链式存储&#xff0c;就是一棵树的左孩子和右孩子 而现在讲的是&#xff1a;顺序存储一棵二叉树。 1.1、存储方式 使用数组保存二叉树结构&#xff0c;方式即将二叉树用层序遍历方式放入数组中。 一般只适合表示完全二叉树&a…...

Python+Qt指纹录入识别考勤系统

PythonQt指纹录入识别考勤系统如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01;前言这篇博客针对<<PythonQt指纹录入识别考勤系统>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学…...

K_A14_004 基于STM32等单片机驱动旋转角度传感器模块 串口与OLED0.96双显示

K_A14_004 基于STM32等单片机驱动旋转角度传感器模块 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC旋转角度传感器模块1.2、STM32F103C8T6旋转角度传感器模块五、…...

2023年全国最新机动车签字授权人精选真题及答案12

百分百题库提供机动车签字授权人考试试题、机动车签字授权人考试预测题、机动车签字授权人考试真题、机动车签字授权人证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 11.注册登记前所有机动车都应进行安全技术检验。 答案…...

Linux小黑板(10):信号

我们写在linux系统环境下写一个程序&#xff0c;唔&#xff0c;"它的功能是每隔1s向屏幕打印hello world。"这时&#xff0c;我们在键盘上按出"Ctrl C"后,进程会发生什么&#xff1f;&#xff1f;我们清晰地看到&#xff0c;进程已经在我们按出"Ctrl…...

GO 语言基础语法一 (快速入门 Go 语言)

Go语言基础语法一. golang 标识符&#xff0c;关键字&#xff0c;命名规则二. golang 变量三. golang 常量四. golang 数据类型五. golang 布尔类型六. golang 数字类型七. golang 字符串1. go语言字符串字面量2. go语言字符串连接(1). 使用加号(2). 使用 fmt.Sprintf() 函数(3…...

Java高效率复习-SpringMVC[SpringMVC-2]

SpringMVC获取请求参数 SpringMVC获取请求参数的两种方式↓ 通过ServletAPI获取请求参数 将HttpServletRequest作为控制器方法的形参&#xff0c;此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 通过request的API——getParameter(String s)方法来获取…...

【前端】一个更底层库-React基础知识点

目录Reat是什么&#xff1f;为什么要使用React类库比较容易学习&#xff0c;API非常少。组件内聚&#xff0c;容易组合原生组件和自定义组件融合渲染状态/属性驱动全局更新commonjs生态圈/工具栏完善React基础知识JSX概述JSX嵌入变量Event事件组合组合CHILDREN总结大家好&#…...

C++ 之枚举类型

文章目录参考描述枚举类型枚举类型枚举变量的声明及定义细节枚举常量的默认初始值枚举常量不可被修改赋值运算枚举常量与数据类型为枚举常量指定数据类型可选择的数据类型特殊的 Bool强枚举类型命名冲突强枚举类型参考 项目描述菜鸟教程C 枚举类型详解精通C &#xff08;第九版…...

软件测试用例(3)

按照测试对象划分: 一)界面测试: 1)软件只是一种工具&#xff0c;软件和人的信息交流是通过界面来进行的&#xff0c;界面是软件和用户交流的最直接的一层&#xff0c;界面的设计决定了用户对于我们设计软件的第一映像&#xff0c;界面如同人的面孔&#xff0c;具有最吸引用户的…...

Qwen3-14B向量数据库集成:Chroma/Milvus接入与混合检索配置

Qwen3-14B向量数据库集成&#xff1a;Chroma/Milvus接入与混合检索配置 1. 引言&#xff1a;为什么需要向量数据库集成 当你部署了强大的Qwen3-14B大模型后&#xff0c;很快会发现一个关键问题&#xff1a;如何让模型记住并快速检索大量知识&#xff1f;这就是向量数据库的价…...

OpenClaw多模型对比:Phi-3-mini-128k-instruct与Qwen在自动化任务中的表现

OpenClaw多模型对比&#xff1a;Phi-3-mini-128k-instruct与Qwen在自动化任务中的表现 1. 测试背景与实验设计 去年夏天&#xff0c;当我第一次尝试用OpenClaw自动化处理日常办公任务时&#xff0c;最困扰我的问题就是模型选择。不同的模型在理解能力、响应速度和资源消耗上差…...

ACUITY IMAGING 070-200000控制器模块

ACUITY IMAGING 070-200000 控制 / 模拟模块ACUITY IMAGING 070-200000 是美国 ACUITY IMAGING 公司出品的工业级高精度信号处理与控制模块&#xff0c;主要用于机器视觉、自动化检测及精密成像系统&#xff0c;负责信号采集、逻辑控制与数据传输&#xff0c;是工业视觉系统的核…...

实战应用开发:基于快马平台构建集成heic转换功能的图片管理系统

最近在做一个图片管理系统的项目&#xff0c;其中遇到一个很实际的需求&#xff1a;用户上传的HEIC格式照片需要自动转换成通用的JPG格式。这个功能看似简单&#xff0c;但实际开发中需要考虑很多细节。下面分享下我在InsCode(快马)平台上实现这个功能的完整过程。 项目整体架构…...

如何通过智慧树自动化学习助手解决网课学习效率问题

如何通过智慧树自动化学习助手解决网课学习效率问题 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 副标题&#xff1a;面向时间紧张学习者的智能网课辅助工具 一、价…...

构建编译环境

拉取LLVM并配置这里我保存在D盘#创建文件夹 mkdir D:\LLVM cd D:\LLVM #拉取源码 (只拉取核心仓库&#xff0c;不需要 submodule&#xff0c;现在 LLVM 是 monorepo) #这一步比较大&#xff0c;网络不好请挂梯子 git clone --depth1 https://github.com/llvm/llvm-project.…...

深入解析RPN(区域生成网络):从原理到Faster RCNN的实战应用

1. RPN的前世今生&#xff1a;从Selective Search到神经网络革命 第一次接触物体检测时&#xff0c;我对着Selective Search算法输出的杂乱无章的建议框直挠头。这个传统方法就像在图片上撒豆子&#xff0c;不仅速度慢&#xff08;CPU处理单张图要2秒&#xff09;&#xff0c;…...

MentorBit红外驱动库:裸机与RTOS下的精准时序控制

1. MentorBit-DetectorIR 库概述MentorBit-DetectorIR 是一款专为 MentorBit 红外发射/接收模块设计的嵌入式底层驱动库&#xff0c;其核心定位并非通用红外协议栈&#xff08;如 NEC、RC5 解码&#xff09;&#xff0c;而是面向硬件验证、模块级功能测试与快速原型开发的轻量级…...

别急着重装!Stable Diffusion WebUI安装失败后,如何利用现有文件快速恢复(Mac/Windows通用)

别急着重装&#xff01;Stable Diffusion WebUI安装失败后&#xff0c;如何利用现有文件快速恢复&#xff08;Mac/Windows通用&#xff09; 当你兴致勃勃地准备体验Stable Diffusion WebUI的强大功能时&#xff0c;突然在安装过程中遇到错误提示&#xff0c;那种挫败感可想而知…...

QMCFLAC2MP3:解锁音乐格式封印,让QQ音乐真正属于你

QMCFLAC2MP3&#xff1a;解锁音乐格式封印&#xff0c;让QQ音乐真正属于你 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件&#xff0c;突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否曾经遇到过这样的尴尬场景&a…...