FreeRTOS作业day4

1.总结二进制信号量和计数型信号量的区别,以及他们的使用场景。

二进制信号量的数值只有0和1,用于共享资源的访问
计数型信号量的值一般是大于或者等于2,用于生产者和消费者模型

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

void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
	osDelay(5000);
  for(;;)
  {
		osSemaphoreAcquire(myCountingSem01Handle,osWaitForever);//获取信号量
		printf("雷军生产了一辆小米SU7\r\n");
		osDelay(500);
  }
  /* USER CODE END StartDefaultTask */
}


void StartTask02(void *argument)
{
  /* USER CODE BEGIN StartTask02 */
  /* Infinite loop */
	osDelay(5000);
  for(;;)
  {
		osSemaphoreRelease(myCountingSem01Handle);//释放信号量
		printf("我购买了一辆小明SU7MAX版本\r\n");
    osDelay(500);
	}
  /* USER CODE END StartTask02 */
}

3.总结FreeRTOS中同步和互斥的五种方法的使用方法
(1)、队列:
创建队列有两种方式,动态创建使用xQueueCreate函数进行创建,静态创建使用xQueueCreateStatic函数进行创建。

写函数:
在中断中使用的个函数:xQueueSendToBackFromISR,是在任务中使用的:xQueueSendToBack。

读函数:
一种是在中断中进行队列的读取(xQueueReceiveFromISR),一种是在任务中进行队列的读取。(xQueueReceive)

(2)、信号量:
在FreeRTOS中有两种信号量:二进制信号量、计数型信号量。

使用 osSemaphoreNew 函数创建信号量,
使用 osSemaphoreAcquire 函数获取信号量,获取信号量后就可以访问共享资源,
使用 osSemaphoreRelease 函数释放信号量,以便于其他任务访问共享资源。

(3)、互斥量:

创建互斥量:osMutexNew
获取互斥量函数:osMutexAcquire
释放互斥量函数:osMutexRelease

(4)、事件组:

在FreeRTOS中,事件组允许任务等待多个事件的状态,并且可以在任何事件被设置时唤醒等待的任务。
创建事件组函数:osEventFlagsNew
设置事件组函数:osEventFlagsSet
等待事件组函数:osEventFlagsWait

(5)、任务通知:

任务通知函数:osThreadFlagsSet

等待任务通知函数:osThreadFlagsWait

4.总结任务通知和其他任务通信机制的区别

1、队列、信号量、互斥量、事件组在使用之前都需要先创建,才能使用。任务通知无需创建即可使用。
2、队列、信号量、互斥量、事件组  是多对多通信。任务通知是多对一通信。(只需要知道要通知的任务ID即可)
3、队列、信号量、互斥量、事件组需要被创建,所以消耗的资源也是比较多。任务通知不需要被创建消耗的资源少。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 ChatGPT 集成精通高级 Excel(二)

原文:Mastering Advanced Excel - With ChatGPT Integration 译者:飞龙 协议:CC BY-NC-SA 4.0 第九章数据透视表 介绍 数据透视表是一种基于交互式工作表的表格,可以快速汇总大量数据,使用您选择的格式和计算方法。它…

AI论文速读 | 2024[WWW]不只是路线:联合 GPS 和路线建模的轨迹表示学习

论文标题:More Than Routing: Joint GPS and Route Modeling for Refine Trajectory Representation Learning 作者:Zhipeng Ma(麻志鹏), Zheyan Tu, Xinhai Chen, Yan Zhang, Deguo Xia, Guyue Zhou, Yilun Chen, Yu Zheng&…

基于springboot实现影城管理系统项目【项目源码+论文说明】

基于springboot实现影城管理系统演示 摘要 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小…

面试官:为什么忘记密码要重置,而不是告诉我原密码?

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello,大家好,我是 Sunday。 最近有个同学在面试中遇到了一个很有意思的问题,我相信大多…

基于深度学习的铁轨缺陷检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要:本文深入研究了基于YOLOv8/v7/v6/v5的铁轨缺陷检测系统。核心技术上,文章采用了最先进的YOLOv8,并整合了YOLOv7、YOLOv6、YOLOv5算法,进行了性能指标的对比分析。文中详细阐述了国内外铁轨缺陷检测的研究现状、数据集处理方法…

【Linux】error: Failed to initialize NSS library

【Linux】error: Failed to initialize NSS library 原因:卸载了sqlite [rootnode1 ~]# rpm -qa|grep sql sqlite-3.7.17-8.el7.x86_64 rpm -e --nodeps sqlite-3.7.17-8.el7.x86_64 百度搜索 sqlite-3.7.17-8.el7.x86_64 下载此rpm包 cd /usr/local/download …

【C++第三阶段】STL初识

以下内容仅为当前认识,可能有不足之处,欢迎讨论! 文章目录 STL初步认识vector存放内置数据类型vector存放自定义数据类型vector 嵌套容器 STL初步认识 回顾时,需要回答自己 ①STL是什么? ②STL怎么用? …

【简单讲解下WebSocket】

🌈个人主页:程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【DA-CLIP】test.py解读,调用DA-CLIP和IRSDE模型复原计算复原图与GT图SSIM、PSNR、LPIPS

文件路径daclip-uir-main/universal-image-restoration/config/daclip-sde/test.py 代码有部分修改 导包 import argparse import logging import os.path import sys import time from collections import OrderedDict import torchvision.utils as tvutilsimport numpy as…

ruoyi-nbcio-plus基于vue3的flowable流程元素选择区面板的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

工业项目中你连SCADA都没见过?

什么是SCADA SCADA是一种监控和数据采集系统,全称是Supervisor.Contro.an.Dat.Acquisition。SCADA系统在工业项目中具有广泛应用,包括生产线监控、工艺控制、设备维护、能源管理、安全监控和产量跟踪等多个场景。通过实时监测、数据采集和远程控制等功能…

网络协议栈--数据链路层

目录 对比理解“数据链路层”和“网络层”一、认识以太网1.1 以太网帧格式1.2 认识MAC地址1.3 对比理解MAC地址和IP地址1.4 认识MTU1.5 MTU对IP协议的影响1.6 MTU对UDP协议的影响1.7 MTU对于TCP协议的影响1.8 查看硬件地址和MTU 二、ARP协议2.1 ARP协议的作用2.2 ARP协议的工作…

15、Scalable Diffusion Models with Transformers

简介 官网 DiT(Diffusuion Transformer)将扩散模型的 UNet backbone 换成 Transformer,并且发现通过增加 Transformer 的深度/宽度或增加输入令牌数量,具有较高 Gflops 的 DiT 始终具有较低的 FID(~2.27)…

springJPA如果利用注解的方式 进行多表关联操作

前言:上一篇我写了个用JPA的Specification这个接口怎么做条件查询并且进行分页的,想学的自己去找一下 地址:springJPA动态分页 今天我们来写个 利用jpa的Query注解实现多表联合查询的demo 注意: 不建议在实际项目中用这玩意. 因为: 1. 用Query写的sql 可读性极差,给后期维护这…

六角螺母缺陷分类数据集:3440张图像

六角螺母缺陷数据集:包含变形,划痕,断裂,生锈,以及优质螺母图片数据,共计3440张,无标注 一.变形螺母-1839 二.断裂螺母-287 三.划痕螺母-473 四.生锈螺母-529 五.优良螺母-312 适用于CV项目&am…

法律行业案例法模型出现,OPenAI公布与法律AI公司Harvey合作案例

Harvey与OpenAl合作,为法律专业人士构建了一个定制训练的案例法模型。该模型是具有复杂推理广泛领域知识以及超越单一模型调用能力的任务的AI系统,如起草法律文件、回答复杂诉讼场景问题以及识别数百份合同之间的重大差异。 Harvey公司由具有反垄断和证…

阿里云服务器199元一年,ECS u1实例性能测评

阿里云服务器ECS u1实例,2核4G,5M固定带宽,80G ESSD Entry盘优惠价格199元一年,性能很不错,CPU采用Intel Xeon Platinum可扩展处理器,购买限制条件为企业客户专享,实名认证信息是企业用户即可&a…

树莓派部署yolov5实现目标检测(ubuntu22.04.3)

最近两天搞了一下树莓派部署yolov5,有点难搞(这个东西有点老,版本冲突有些包废弃了等等) 最后换到ubuntu系统弄了,下面是我的整体步骤: 1.烧完ubuntu镜像后,接显示器按系统流程进行系统部署(大于…

win10+Intel显卡安装配置stable-diffusion-webui绘画网页

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

精准扶贫管理系统|基于Springboot的精准扶贫管理系统设计与实现(源码+数据库+文档)

精准扶贫管理系统目录 目录 基于Springboot的精准扶贫管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1)用户信息管理 (2)贫困户信息管理 (3)新闻类型管理 &a…