【STM32嵌入式系统设计与开发拓展】——16_FreeRTOS操作系统

devtools/2024/12/22 9:02:45/

参考:链接: 正点原子

一、认识裸机和RTOS

裸机是无操作系统支持,程序直接运行在硬件上,开发者要自行处理硬件细节。早期单片机常采用,优点是性能和资源利用率高,缺点是开发难、可移植性差。RTOS 是实时操作系统,对任务响应有严格要求,如汽车制动系统。它能减轻开发负担,但会占用资源影响性能。两者各适用于不同场景在这里插入图片描述

裸机特点:

1、实时性差
2、延时函数delay时候是空等待不做任何工作的
3、结构臃肿

在这里插入图片描述

RTOS特点:

1、实现功能划分为多个任务
2、任务调度
3、 高优先级任务抢占低优先级任务
4、每个任务都有自己的栈空间

FreeRTOS:

是一个免费的嵌入式实时操作系统
1、免费开源
2、可裁剪
3、简单
4、优先级不限
5、任务不限
6、 抢占/协程/时间片
7、主流

抢占式调度:

在这里插入图片描述 1、【任务设置的数值越大,优先级越高】;
2、高优先级任务不停止,低优先级任务无法执行;
3、被抢占的任务将会进入就绪态;

时间片调度:

在这里插入图片描述
1、同等优先级任务,轮流执行,时间片流转
2、一个时间大小,取决为滴答定时器中断周期
3、没有用完的时间片不会再使用

任务状态

在这里插入图片描述

在这里插入图片描述

资料整理
1、FreeRTOS官网:https://www.freertos.org/


二、FreeRTOS移植

1、源码获取

FreeRTOS官网:https://www.freertos.org/

2、FreeRTOS移植

链接: link

3、系统配置文件说明

三、代码分析


http://www.ppmy.cn/devtools/96248.html

相关文章

使用 onBeforeRouteUpdate 组合式函数提升应用的用户体验

title: 使用 onBeforeRouteUpdate 组合式函数提升应用的用户体验 date: 2024/8/15 updated: 2024/8/15 author: cmdragon excerpt: 摘要:本文介绍如何在Nuxt 3开发中使用onBeforeRouteUpdate组合式函数来提升应用用户体验。通过在组件中注册路由更新守卫&#xf…

高效记录与笔记整理的策略:工具选择、结构设计与复习方法

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

函数声明与函数表达式的区别是什么?

var init function() >函数表达式,函数在代码执行到当前行时才被执行,init才被赋值 function init()0 >函数声明,和var一样,会被提前到代码最前面定义 区别: 1) 以函数声明的方法定义的函数,函数名是必须的&am…

【数据结构详解】——归并排序(动图详解)

目录 🕒 1. 归并排序🕘 1.1 递归实现🕘 1.2 非递归实现 🕒 1. 归并排序 💡 算法思想:归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子…

100个练习学习Rust!可变性・循环・溢出

【0】准备 【1】构文・整数・变量 【2】 if・Panic・演练 ←前次 【3】可变性・循环・溢出 本次 这是“100 Exercise To Learn Rust”的第三次练习!这次是关于两个循环结构的讨论,可能与上上次练习中讨论的溢出有关! 本次相关的页面如下&…

Linux - 基础工具使用

文章目录 一、yum1、介绍2、功能3、语法4、使用 二、rzsz1、安装rzsz的指令2、介绍3、使用 三、vim基础使用1、介绍2、基础使用 四、gcc/g使用1、生成可执行文件过程2、语法3、常用选项4、编译过程5、动静态库6、包含头文件的多文件编译7、链接外部库 一、yum 1、介绍 Linux中…

laravel 11 使用jw-auth进行API 登录

首先安装 composer require tymon/jwt-auth 默认安装后我的版本是2.1 "require": {"php": "^8.2",...."tymon/jwt-auth": "^2.1"}, 发布包配置文件 php artisan vendor:publish --provider"Tymon\JWTAuth\Provider…

【代码随想录算法训练营第42期 第三天 | LeetCode203.移除链表元素、707.设计链表、206.反转链表】

代码随想录算法训练营第42期 第三天 | LeetCode203.移除链表元素、707.设计链表、206.反转链表 一、203.移除链表元素 解题代码C: struct ListNode* removeElements(struct ListNode* head, int val){struct ListNode* temp;// 当头结点存在并且头结点的值等于val…