【嵌入式学习】FreeRTOS day04.05

练习

1.总结二进制信号量和计数型信号量的区别,以及他们的使用场景。
二进制信号量:信号量的数值只有0和1(用于共享资源的访问)
计数性信号量:计数型信号量的值一般是大于或者等于2(生产者和消费者模型)

2.使用技术型信号量完成生产者和消费者模型实验。

//生产者
void producerTask(void *pvParameters) {while (1) {if (xSemaphoreTake(xSemaphoreProducer, portMAX_DELAY) == pdTRUE) {// 生产操作produceItem();// 释放一个消费者信号量xSemaphoreGive(xSemaphoreConsumer);}}
}
//消费者
void consumerTask(void *pvParameters) {while (1) {if (xSemaphoreTake(xSemaphoreConsumer, portMAX_DELAY) == pdTRUE) {// 消费操作consumeItem();// 释放一个生产者信号量xSemaphoreGive(xSemaphoreProducer);}}
}

3.总结FreeRTOS中同步和互斥的五种方法的使用方法
队列、信号量、互斥量、事件组、任务通知
FreeRTOS中的队列是用于任务之间的通信,遵循先进先出的规则。
信号量是一个长度为1的特殊队列,长度为1的空间用于存储信号量的计数值。
FreeRTOS中互斥量主要就是用于保护共享资源,保证数据访问的一致性和正确性
事件组是一种同步机制,用于任务之间的通信和同步。它允许任务等待多个事件的状态,并且可以在任何事件被设置时唤醒等待的任务。
任务通知通过TCB控制块来完成,需要创建。

4.总结任务通知和其他任务通信机制的区别
队列、信号量、互斥量、事件组在使用之前都需要先创建,才能使用,任务通知无需创建即可使用。
队列、信号量、互斥量、事件组 多对多通信。任务通知是多对一通信。
队列、信号量、互斥量、事件组需要被创建所以消耗的资源比较多、任务通知不需要被创建消耗的资源少。

5.根据文档和录屏学习一下软件定时器,了解软件定时器的作用和软件定时器和硬件定时器的区别
软件定时器用于控制任务的执行时间。通过设置定时器,可以让某个任务在指定的时间后执行,实现任务的延时启动或周期性执行。
硬件定时器是基于硬件的,通常集成在微控制器或其他处理器中。它们利用硬件计数器进行计时,能够提供高精度的时间测量。硬件定时器直接由硬件支持,对系统资源的消耗相对较小。
软件定时器是通过软件算法实现的,依赖于操作系统的调度机制。它们的精度受到系统调度策略和当前系统负载的影响。软件定时器需要操作系统参与调度,可能会消耗更多的CPU资源,特别是在大量定时器活跃时。

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

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

相关文章

软件设计原则:开闭原则

定义 开闭原则(Open-Closed Principle, OCP)是面向对象设计的基本原则之一,由 Bertrand Meyer 提出。它指出软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着软件应该设计成在不修改现有代…

如何从vue项目界面上看出来node.js版本

一: 要从 Vue 项目界面上看出当前使用的 Node.js 版本,你可以通过以下几种方式进行查看: 开发者工具:在浏览器中打开 Vue 项目,并打开开发者工具(一般是按下 F12 键)。在开发者工具的控制台选项…

【复读EffectiveC++16】条款16:成对使用new和delete时要采取相同形式

条款16:成对使用new和delete时要采取相同形式 此条款,依然是针对对象管理资源的补充,内容分为三个部分: 错误案例为什么要采取相同形式需要注意什么 一、错误案例 取原书的例子: std::string* stringArray new s…

浏览器工作原理与实践--DOM树:JavaScript是如何影响DOM树构建的

在上一篇文章中,我们通过开发者工具中的网络面板,介绍了网络请求过程的几种性能指标以及对页面加载的影响。 而在渲染流水线中,后面的步骤都直接或者间接地依赖于DOM结构,所以本文我们就继续沿着网络数据流路径来介绍DOM树是怎么生…

MATLAB实现数值求解高阶常微分方程组

一、高阶常微分方程组 高阶常微分方程是指包含多个高阶常微分方程的系统。这些方程通常涉及多个未知函数及其高阶导数。解决高阶常微分方程组通常比解决单个高阶常微分方程更为复杂,因为需要同时考虑多个方程和多个未知函数之间的关系。 一般来说,解决…

SpringBoot面试题积累

面试题15道:腾讯二面:SpringBoot 有几种读取配置文件的方式?你详细说一下每种方式是怎么使用的 ?_哔哩哔哩_bilibili 1. SpringBoot 有几种读取配置文件的方式?你详细说一下每种方式是怎么使用的 ? 2. 为…

【PyQt5篇】使用QtDesigner添加控件和槽

文章目录 &#x1f354;使用QtDesigner进行设计&#x1f6f8;在代码中添加信号和槽 &#x1f354;使用QtDesigner进行设计 我们首先使用QtDesigner设计界面 得到代码login.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0&q…

金融中的数学模型

平稳时间序列 时间序列的基本统计特性&#xff0c;如均值、方差和自相关等&#xff0c;在时间上不随时间的推移而发生显著的变化。 平稳时间序列通常具有以下特征&#xff1a; 均值不随时间变化&#xff1a;序列的均值在时间上保持恒定。方差不随时间变化&#xff1a;序列的…

CSS属性计算逻辑

CSS 属性计算逻辑 首先&#xff0c;假设在 HTML 中有这么一段代码&#xff0c;在 body 中有一个 h1 标题&#xff1a; <body><h1>这是一个h1标题</h1> </body>目前我们没有设置该 h1 的任何样式&#xff0c;但是却能看到该 h1 有一定的默认样式&…

2024 年最新使用 Python 部署腾讯云服务器搭建企业微信机器人应用详细教程

企业微信机器人是一种可以在企业微信工作群中执行特定任务的自动化工具。它具备丰富的功能&#xff0c;可以帮助企业提高团队协作效率&#xff0c;简化工作流程&#xff0c;并为员工提供更好的工作体验。 获取企业 ID 信息 企业信息页面链接地址&#xff1a;https://work.wei…

oracle pdb从12.1迁移到19.20

oracle pdb从12.1迁移到19.20 1 unplug &#xff08;12c的环境执行&#xff09; SQL> alter pluggable database VINCENT_TEST close immediate; SQL> alter pluggable database VINCENT_TEST unplug into /u01/backup/temp_20240401/VINCENT_TEST.xml;2 plug &#xf…

Python常用算法--排序算法【附源码】

应用具体python案例方式展示各种排序的要点,特别是希尔排序、插入排序、选择排序、冒泡排序、堆排序、快速排序、归并排序七个具体的排序算法。 一、希尔排序: 解释:希尔排序(Shell Sort)是一种插入排序的改进版本,也被称为缩小增量排序。希尔排序通过比较相距一定间隔…

Xshell Mobaxterm等终端工具连接不上服务器,显示 SSH服务器拒绝密码。请再试一次。解决办法

问题解决办法&#xff1a; &#xff08;1&#xff09;需要查看配置SSH密钥时&#xff0c;输入的password密码和当前users_name cd /home/: 查看当前系统下的用户名 注意上图中的登录名是服务器端linux下自己设置的user_name用户名&#xff1a; 所以需要将fl改为&#xff1a…

CCIE-10-IPv6-TS

目录 实验条件网络拓朴 环境配置开始Troubleshooting问题1. R25和R22邻居关系没有建立问题2. 去往R25网络的下一跳地址不存在、不可用问题3. 去往目标网络的下一跳地址不存在、不可用 实验条件 网络拓朴 环境配置 在我的资源里可以下载&#xff08;就在这篇文章的开头也可以下…

Linux Shell:`xargs`命令

Linux Shell&#xff1a;xargs命令 在Linux Shell脚本或命令行操作中&#xff0c;xargs是一个非常有用的命令&#xff0c;它可以将标准输入&#xff08;stdin&#xff09;数据转换成命令行参数。xargs命令读取来自标准输入的数据&#xff0c;然后将这些数据作为参数传递给其他…

《Java面试自救指南》(专题三)数据库

文章目录 一条sql语句的查询流程有哪些数据库存储引擎&#xff0c;各自的区别数据库的三大范式事务的四大特性&#xff08;含隔离级别&#xff09;MySQL四种隔离机制的底层实现&#xff08;如何解决幻读 &#xff09;MySQL有哪几种锁&#xff0c;分别怎么实现数据库中有哪些索引…

Kubernetes学习笔记8

Kubernetes集群客户端工具kubectl 我们已经能够部署Kubernetes了&#xff0c;那么我们如何使用Kubernetes集群运行企业的应用程序呢&#xff1f;那么&#xff0c;我们就需要使用命令行工具kubectl。 学习目标&#xff1a; 了解kubectl 命令帮助方法 了解kubectl子命令使用分…

竞赛常考的知识点大总结(四)高级数据结构

并查集 并查集&#xff08;Disjoint Set Union&#xff0c;DSU&#xff09;是一种数据结构&#xff0c;用于管理一系列不相交的集合&#xff0c;并支持两种操作&#xff1a;合并&#xff08;Union&#xff09;和查找&#xff08;Find&#xff09;。并查集可以高效地处理动态连…

传统海外仓的管理模式有什么缺点?使用位像素海外仓系统的海外仓有什么优势?

传统的海外仓管理模式主要需要大量的人工操作和相对简单的信息化手段进行仓库的日常运营。因此&#xff0c;传统海外仓的运作比较依赖仓库员工的手工记录、核对和处理各种仓储和物流信息。 然而&#xff0c;传统海外仓管理模式通常存在一些缺点&#xff1a; 效率低下 因为需…

Docker-23.0.0版本 一键安装

一 前言 在数字化飞速发展的今天&#xff0c;应用程序的部署和管理成为每个企业和个人开发者不可忽视的课题。而Docker&#xff0c;作为一款开源的容器化技术&#xff0c;正以其独特的沙箱环境和逻辑隔离特性&#xff0c;引领着应用程序部署的新潮流。想象一下&#xff0c;每个…