初识FreeRTOS

news/2024/12/29 23:47:20/

一、FreeRTOS 介绍

什么是 FreeRTOS ?

Free即免费的,RTOS的全称是Real time operating system,中文就是实时操作系统。 注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OS,FreeRTOS,RTX, RT-Thread等这些都是RTOS类操作系统。

FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管 理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满 足较小系统的需要。 由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、 embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移 植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为 10.4.4版。

为什么选择 FreeRTOS ?

  • FreeRTOS 是免费的;
  • 很多半导体厂商产品的SDK(Software Development Kit)软件开发工具包,就使用FreeRTOS 作为其操作系统,尤其是WIFI、蓝牙这些带有协议栈的芯片或模块。
  • 简单,因为FreeRTOS的文件数量很少。

为什么要学 FreeRTOS ?

更有钱途!! 只会祼机开发的单片机工程师,薪资注定不会高于会 FreeRTOS 的工程师; 有了 FreeRTOS 基础,对于将来学习 Linux 操作系统会更加有帮助;

FreeRTOS 资料与源码下载

最好的资料就是官网提供的资料!点击进入官网

祼机开发与 FreeRTOS

 FreeRTOS 实现多任务的原理

严格来说 FreeRTOS 并不是实时操作系统,因为它是分时复用的

系统将时间分割成很多时间片,然后轮流执行各个任务。 每个任务都是独立运行的,互不影响,由于切换的频率很快,就感觉像是同时运行的一样

 移植 FreeRTOS 到上官二号平台

手动移植 过程复杂且繁琐,对新手不友好。如有需要手动移植,可参照以下文章:

点击直达

使用CubeMX快速移植

快速移植流程

一些常见问题

1. Timebase Source 为什么不能设置为 SysTick ?

裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。 

2. FreeRTOS 版本问题 V2 的内核版本更高,功能更多,在大多数情况下 V1 版本的内核完全够用。

3. FreeRTOS 各配置选项卡的解释

  • Events:事件相关的创建
  • Task and Queues: 任务与队列的创建
  • Timers and Semaphores: 定时器和信号量的创建
  • Mutexes: 互斥量的创建
  • FreeRTOS Heap Usage: 用于查看堆使用情况
  • config parameters: 内核参数设置,用户根据自己的实际应用来裁剪定制 FreeRTOS 内核
  • Include parameters: FreeRTOS 部分函数的使能
  • User Constants: 相关宏的定义,可以自建一些常量在工程中使用
  • Advanced settings:高级设置

4. 内核配置、函数使能的一些翻译

内核参数的理解内容非常多,可以参考以下文章:

FreeRTOS内核参数说明


http://www.ppmy.cn/news/840560.html

相关文章

css写一个小圆点

.mark {width: 10px;height: 10px;border: 1px solid #8c8c8c;border-radius: 20px;background-color: #8c8c8c;opacity: 0.5;}<div class "mark"></div> <span>指示器名称</span>

markdown实心圆点空心圆点、层级

标题目录如何层次分明&#xff0c;需要用到实心圆点、空心圆点、方点&#xff0c;而这些需要用到表示无序列表的标记 * 或 - 或 。不同层级可以使用 Tab 键控制。 - 本程序的主要内容。- 调用接口 align_api.py- predict 用于生成预测结果- 输入文件- 输出文件- content_alig…

css圆点背景

简洁圆点背景 background: radial-gradient(circle at 1px 1px,#000 2px,transparent 0); background-size: 49.5px 49.5px; //圆点间隔&#xff08;自定义值&#xff09; 第一值是左右间隔 第二个值是上下间隔

JavaScript——网页轮播图( 实现点击小圆点、图片滑动、小圆点样式改变)

一、轮播图要实现的效果&#xff1a; 实现点击小圆点、图片滑动、小圆点样式改变 二、轮播图实现效果步骤&#xff1a; 1.利用htmlcss完成轮播图片&#xff0c;底部小点的整体效果的布局。 2.通过原生js完成图片轮播&#xff0c;无缝自动切换&#xff0c;底部小点随图片切换…

li前面的小圆点样式修改

css中用list-style-type指定列表&#xff08;lists&#xff09;前面符号,如下&#xff1a; li {list-style-type:符号名称} 符号名称可用的值为&#xff1a; disc :  CSS1 实心圆 circle :  CSS1 空心圆 square :  CSS1 实心方块 decimal :  CSS1 阿拉伯数字 lower-ro…

vue 画一个小圆点

效果图&#xff1a; 方法1&#xff1a; <span style"margin: 0 10px;font-size: 36px">•</span> 右击右下角输入法&#xff0c;点击表情符号&符号&#xff0c;往下翻&#xff0c;会找到符号中的小圆点&#xff0c;再设置大小&#xff0c;用font-s…

css 绘制小圆点

1.直接上代码 <html> <head> <style type"text/css">.dot {position: absolute;top: 50%;margin-left: -5px;margin-top: -5px;width: 10px;height: 10px;border-radius: 100%;background: #ffff;box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2);}<…

Flutter 绘制小圆点

Row(children: [Container(width: 10,height: 10,decoration: BoxDecoration(color: Colors.black87,borderRadius: BorderRadius.all(Radius.circular(5))),),SizedBox(width: 5,),Text("无法使用账号",style: TextStyle(color: Colors.black87, fontSize: 16),),],…