【RTOS】快速体验FreeRTOS所有常用API(10)资源管理

news2024/11/18 14:47:21

目录

    • 十、资源管理
      • 10.1 基本概念
      • 10.2 关任务调度器
      • 10.3 关中断
      • 10.4 实例

十、资源管理

该部分在上份代码基础上修改得来,代码下载链接:

https://wwzr.lanzout.com/iqBYJ1lauxof

密码:9adb

该代码尽量做到最简,不添加多余的、不规范的代码。

内容主要包括

  • 互斥的本质
  • 关中断
  • 关任务调度器

最终实现效果:

  • 创建任务1、任务2,任务1中暂停中断/调度器,死循环3s,后恢复中断/调度器。

img

10.1 基本概念

资源管理主要是说管理共享资源

资源管理涉及到任务之间对共享资源的互斥****访问

用 队列、信号量/互斥量、事件组、任务通知 都可以实现互斥操作。

他们实现互斥的本质,其实就是 关中断关任务调度器。这个在其函数内部都可以找到,最终都会调用这两个函数中的一个:关任务调度器vTaskSuspendAll(); 关中断taskENTER_CRITICAL();

互斥****的核心思想谁跟我抢,就先禁止谁。(任务抢资源,就关任务调度器。中断抢资源,就关中断)

10.2 关任务调度器

在FreeRTOS中,可以使用 vTaskSuspendAllxTaskResumeAll 函数来暂停和恢复调度器。这对于禁止任务切换非常有用,可以确保在关键部分的代码中不会发生任务切换。

// 暂停调度器
vTaskSuspendAll();

// 关键代码段,此时任务切换被禁止

// 恢复调度器
xTaskResumeAll();

10.3 关中断

在FreeRTOS中,可以使用 taskENTER_CRITICALtaskEXIT_CRITICAL 宏来屏蔽和恢复中断。适用于需要禁止中断的关键代码段。在中断被屏蔽时,所有中断都会被禁止,包括时钟中断和其他外部中断。任务调度器的运行依赖于时钟中断(SysTick),所以任务调度器也自然失效了

// 屏蔽中断
taskENTER_CRITICAL();

// 关键代码段,此时中断被禁止

// 恢复中断
taskEXIT_CRITICAL();

10.4 实例

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1390065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源云真机平台-Sonic平台-python自定义脚本-批量导出monkey测试日志并抓取logcat日志

【主要功能】 开源云真机平台-Sonic平台-python自定义脚本: 1、批量导出monkey测试日志 2、抓取logcat日志 3、将导出的日志批量复制到局域网内的制定电脑上进行收集整理; 4、每一台设备的monkey日志、logcat日志单独存储,并以日期设备序…

【CSDN年度征文】关于三掌柜2023全年回顾和总结

目录 前言 顺利转正 被任命为项目经理 印象深刻的实战经历:项目重大版本上线 系统学习新技术的心得体会 获得腾讯云开发者社区优秀作者奖 想要安利给所有人的开发工具 技术大会招募 线下沙龙圆桌主持 新书发布上市 受邀直播探会 接受采访 组织1024程序…

css mask使用,背景透明,图片裁切

1 语法 mask: url(image.png); 使用位图来做遮罩mask: url(image.svg#star); 使用SVG图形中的形状来做遮罩mask: linear-gradient(#000 , transparent) 接受类似背景参数的渐变来做遮罩2 示例 2.1 背景透明 {background: url(im…

算法第二十天-丑数Ⅱ

丑数Ⅱ 题目要求 解题思路 题目的要求是让我们生成第n个丑数。如果考虑逐个遍历自然数是否为丑数,一定会超时。这里推荐使用生成的办法。 要生成第n个丑数,我们必须从第一个丑数1开始,向后逐渐的寻找。丑数只包含2,3&#xff0c…

Tensorflow2.0笔记 - Broadcasting和Tile

关于broadcasting的介绍,参考这篇文章。 https://blog.csdn.net/python_LC_nohtyp/article/details/104097417 import tensorflow as tf import numpy as nptf.__version__#关于broadcasting的介绍,参考这篇文章 #https://blog.csdn.net/python_LC_noht…

【Vue3】3-3 : 组件之间是如何进行互相通信的

本书目录:点击进入 一、组件之间为什么要做通信 二、组件之间通信方式 2.1、父传子:由传递属性实现 stage 1:申明 (即定义) stage 2:注册 stage 3:使用 【示例】:父组件将 tit…

前端动画特效分享(附在线预览)

分享几款不错的动画特效源码 其中有CSS动画、canvas动画、js小游戏等等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 canvas爱心代码动画 爱心代码动画特效 由里向外不断的产生的小爱心形成一个巨大的爱心动画 以下图片…

【前端转安卓】-Java基础知识笔记

常量定义:final public class HelloWorld {// 静态常量public static final double PI 3.14;// 声明成员常量final int y 10;public static void main(String[] args) {// 声明局部常量final double x 3.3;} }变量声明、赋值 String username,address,phone,te…

C for Graphic:Sliced Circle Image

不做UI不知道,没想到时至今日,ugui居然没有sliced filled image模式,用circle做filled,不能用sliced九宫格图,导致每次使用这个效果必须一张新图,何其浪费资源。 原始功能如下: 我…

特征工程-特征处理(三)

特征处理 连续型变量处理(二) 多特征 降维 PCA PCA是一种常见的数据分析方式,通过数据分解,将高维数据降低为低维数据,同时最大程度保持数据中保存的信息。 from sklearn.decomposition import PCA A np.array([[84…

运维体系中的那些Ops们

目录 前言 DevOps DevSecOps GitOps 1、缺少一致性 2、使用成本高 3、鉴权分散 4、审核审计困难 5、不可变基础设施扩展难 DataOps AIOps 总结 前言 提到运维,自然而然会联想到DevOps,大家应该还听说过DataOps、GitOps、DevSecOps、AIOps等…

解决英特尔无线网卡WiFi或者蓝牙突然消失问题

winR,输入“devmgmt.msc”,检查设备管理器中的无线网卡驱动是否安装好。 访问https://www.intel.cn/content/www/cn/zh/download/19351/windows-10-and-windows-11-wi-fi-drivers-for-intel-wireless-adapters.html下载对应系统版本的英特尔无线网卡WiFi…

MC使用Waterfall 跨服

前言 想弄一个跨服,目前这篇文章是边测试边写的,两个子服都是在同一个机器上运行的 如果两个子服在不同的网络,跨服的延迟就会比较高 两个子服 s1 和 s2 都是使用folia核心 版本1.20.1s1 端口: 25565s2 端口 : 25566 1.下载 Waterfall W…

常用植被物候提取方法

(一)Background 这篇文章介绍的非常全面!! 物候的提取通常包含两个步骤:(1)曲线的重构拟合(curve fitting)和 (2)物候矩阵的提取 (p…

数据库概述、部署MySQL服务、必备命令 、密码管理、安装图形软件、SELECT语法 、筛选条件

1 案例1:构建MySQL服务器 1.1 问题 在IP地址192.168.88.50主机和192.168.88.51主机上部署mysql服务练习必备命令的使用 1.2 方案 准备2台虚拟机,要求如下: 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:安装软件 命令…

从零学Java 线程安全的集合

线程安全的集合 文章目录 线程安全的集合1 List 和 Set体系Collections中的工具方法1.1 CopyOnWriteArrayList1.2 CopyOnWriteArraySet1.3 ConcurrentHashMap 2 CAS算法3 Queue接口(队列)3.1 ConcurrentLinkedQueue3.2 BlockingQueue接口(阻塞…

进程上下文的概念和切换简单通俗的解释

进程上下文是进程执行活动全过程的静态描述。我们把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为进程上文,把正在执行的指令和数据在寄存器与堆栈中的内容称为进程正文,把待执行的指令和数据在寄存器与堆栈中的内容称为进程下文。 实际上li…

基于杂交PSO算法的风光储微网日前优化调度(MATLAB实现)

微网中包含:风电、光伏、储能、微型燃气轮机,以最小化电网购电成本、光伏风机的维护成本、蓄电池充放电维护成本、燃气轮机运行成本及污染气体治理成本为目标,综合考虑:功率平衡约束、燃气轮机爬坡约束、电网交换功率约束、储能装…

细说JavaScript的数据类型(JavaScript的数据类型详解)

在JavaScript中有六种不同的数据类型,六种数据类型又分为5种简单数据类型(基本数据类型)和1中复杂数据类型(引用数据类型),基本数据类型分为:字符串类型(string)、数值类…

机器学习周刊第六期:哈佛大学机器学习课、Chatbot Ul 2.0 、LangChain v0.1.0、Mixtral 8x7B

— date: 2024/01/08 — 吴恩达和Langchain合作开发了JavaScript 生成式 AI 短期课程:《使用 LangChain.js 构建 LLM 应用程序》 大家好,欢迎收看第六期机器学习周刊 本期介绍10个内容,涉及Python、机器学习、大模型等,目录如下&#xff…