FreeRTOS-信号量

信号量

信号:起通知作用。

量:表示资源的数量。

        当量没有限制时,就是计数型信号量。

        当量只有0、1时,就是二进制信号量。

支持的动作:give给出资源,计数值+1;take获得资源,计数值-1。

队列信号量

可以容纳多个数据,

创建队列时有2部分内存:队列结构体、存储数据的空间

只有计数值,无法容纳其他数据。

创建信号量时,只需要分配信号量结构体

生产者:没有空间存入数据时可以阻塞生产者:用于不阻塞,计数值已经达到最大时返回失败
消费者:没有数据时可以阻塞消费者:没有数据时可以阻塞
二进制信号量计数型信号量
被创建时初始值为0被初始化时初始值可以设定
其他操作是一样的其他操作是一样的

创建信号量

二进制信号量计数型信号量
动态创建xSemaphoreCreateBinary计数值初始值为0xSemaphoreCreateCounting
vSemaphoreCreateBinary计数值初始值为1(过时了)
静态创建xSemaphoreCreateBinaryStaticxSemaphoreCreateCountingStatic
/* 创建一个二进制信号量,返回它的句柄。* 此函数内部会分配信号量结构体* 返回值: 返回句柄,非NULL表示成功
*/
SemaphoreHandle_t xSemaphoreCreateBinary( void );/* 创建一个二进制信号量,返回它的句柄。* 此函数无需动态分配内存,所以需要先有一个StaticSemaphore_t结构体,并传入它的指针* 返回值: 返回句柄,非NULL表示成功
*/
SemaphoreHandle_t xSemaphoreCreateBinaryStatic( StaticSemaphore_t *pxSemaphoreBuffer );/* 创建一个计数型信号量,返回它的句柄。* 此函数内部会分配信号量结构体* uxMaxCount: 最大计数值* uxInitialCount: 初始计数值* 返回值: 返回句柄,非NULL表示成功
*/
SemaphoreHandle_t xSemaphoreCreateCounting(UBaseType_t uxMaxCount, UBaseType_t uxInitialCount);/* 创建一个计数型信号量,返回它的句柄。* 此函数无需动态分配内存,所以需要先有一个StaticSemaphore_t结构体,并传入它的指针* uxMaxCount: 最大计数值* uxInitialCount: 初始计数值* pxSemaphoreBuffer: StaticSemaphore_t结构体指针* 返回值: 返回句柄,非NULL表示成功
*/
SemaphoreHandle_t xSemaphoreCreateCountingStatic( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount, StaticSemaphore_t *pxSemaphoreBuffer );

删除信号量

对于动态创建的信号量,不再需要它们时,可以删除它们以回收内存。

vSemaphoreDelete可以用来删除二进制信号量、计数型信号量。

/* xSemaphore: 信号量句柄,你要删除哪个信号量 */
void vSemaphoreDelete( SemaphoreHandle_t xSemaphore );

give/take

二进制信号量、计数型信号量的give、take操作函数是一样的。也分两个版本:给任务使用、给ISR使用。

在任务中使用在ISR中使用
givexSemaphoreGivexSemaphoreGiveFromISR
takexSemaphoreTakexSemaphoreTakeFromISR

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

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

相关文章

Charles下载安装及配置之Mac

因工作需要用到抓包工具,但Fiddler不能在mac上使用,所以找到了Charles,Charles其实是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到…

sql注入靶场

第一关: 输入:http://127.0.0.1/sqli-labs-master/Less-1/?id1 http://127.0.0.1/sqli-labs-master/Less-1/?id1%27 http://127.0.0.1/sqli-labs-master/Less-1/?id1%27-- 使用--来闭合单引号,证明此处存在字符型的SQL注入。 使用order …

Unity之NetCode多人网络游戏联机对战教程(10)--玩家动画同步

文章目录 前言NetworkAnimation服务端权威客户端权威 前言 这次的动画同步与位置同步,可以说实现思路是一样的,代码相似度也非常高 NetworkAnimation 如果直接挂载这个脚本只有Host(服务端)才可以同步,Client是没有…

通过火狐Firefox浏览器在设备间留言、传递备注消息

如果多台设备间没有都安装微信、飞书这种可以通过文件传输助手备注消息的APP,那么可通过火狐浏览器在设备间留言。 原理:火狐支持把当前设备的一个浏览器标签页发送到其他设备 那么我们只需要把要留言的文本记录到一个网页,然后发送到其他设…

grpc 集成 opentelemetry

服务端代码: package mainimport ("context""flag""fmt""go.opentelemetry.io/otel""go.opentelemetry.io/otel/attribute""go.opentelemetry.io/otel/exporters/jaeger""go.opentelemetry.io/o…

快速开发出一个公司网站

问题描述:参加一个创业活动,小组要求做一个公司网站,简单介绍一下自己公司的业务。需要快速完成。 问题解决:从网上找一个网站模板,类似于做PPT,搭建一个网站即可。 这里推荐的是京美建站、wordpress、he…

springboot云HIS医院信息综合管理平台源码

满足基层医院机构各类业务需要的健康云HIS系统。该系统能帮助基层医院机构完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能,能与公卫、PACS等各类外部系统融合,实现多…

132.四叶玫瑰数-列举、查找、判断等题型【满分解题代码+详细分析】(四叶玫瑰数类型题-C/C++JavaPython实现)

文章目录 132.四叶玫瑰数-列举、查找、判断等题型【满分解题代码+详细分析】(四叶玫瑰数类型题-C/C++&Java&Python实现)一.题目题目类型1:列举题目类型2:判断1.1 解题思路1.1.1 题目类型1:列举1.1.2 题目类型2:判断二.解题代码2.1 题目类型1:列举 C/C++解题代码…

现代控制理论 -- 能控性、能观性

能控性定义: 若给定系统的一个初始状态x(t0)(t0可为0),若在t1>t0的有限时间区间[t0,t1]内,存在容许控制u(t)使得x(t1)0,则称系统状态在t0时刻是能控的。 若系统对任意一个初始状态都能控,则…

常见加密算法

常见加密算法 加密算法是一种用数学方法对数据进行变换的技术,目的是保护数据的安全,防止被未经授权的人读取或修改。加密算法可以分为三大类:对称加密算法、非对称加密算法和哈希算法(也叫摘要算法)。 哈希算法 哈…

来自2023 TM Forum 数字领导力中国峰会的邀请函

峰会介绍 2023数字领导力中国峰会由tmforum和亚信科技联合主办。 数据驱动创新,数字塑造未来!2023数字领导力中国峰会,立足技术和商业视角,聚焦讨论各行业如何依托数据治理、IT和网络转型,实现跨越式增长。 这里&am…

十八数藏的文化数字革新:传统之美的数字转变

在数字时代的冲击下,十八数藏以其独特的文化数字革新,将传统之美注入数字的脉络中,实现了非遗之珍的数字转变。这种数字化的创新不仅为传统工艺赋予了新的生命,也使得传承变得更为生动与全面。 十八数藏通过数字技术,将…

【挑战业余一周拿证】一、亚马逊云科技简介 - 第 2 节 - 模块 简介

CSDN 官方中文视频(免费):点击进入 第 2 节 - 模块 1 简介 这门课程将为您提供需要了解的所有重要信息,让您能够轻松讨论亚马逊云科技并了解它为 何对您的企业有利 亚马逊云科技为每个企业都提供了非常广泛的服务,从…

【Unity的HDRP渲染管线VR性能优化_UNITY_SINGLE_PASS_STEREO和UNITY_STEREO_MULTIVIEW_ENABLED】

Unity VR性能优化 简单存留一下!!!!简单存留一下!!!! 看引擎内置的一些包含文件,然后看见下面这一段 //立体多例化渲染技术的核心思想是一次向渲染管道上提交两份待渲染的几何体数据,减少绘制调用 draw call 的次数,提升渲染性能。 #if defined(UNITY_SINGLE_PASS…

蓝桥杯-02-python组考点与14届真题

文章目录 蓝桥杯python组考点与14届真题参考资源python组考点1. 组别2. 竞赛赛程3. 竞赛形式4. 参赛选手机器环境5. 试题形式5.1. 结果填空题5.2. 编程大题 6. 试题考查范围7. 答案提交8. 评分9. 样题样题 1:矩形切割(结果填空题)样题 2&…

AntDB数据库与东方通TongWeb完成兼容互认,共筑数字化底座核心能力

近日,湖南亚信安慧科技有限公司(简称:亚信安慧)与北京东方通科技股份有限公司(简称:东方通)完成AntDB数据库与东方通应用服务器TongWeb V7.0的兼容互认。经测试,AntDB数据库能与东方…

docker启动容器失败,然后查看日志,docker logs查看容器出现报错:

docker 启动容器失败,然后docker logs 查看容器出现报错: error from daemon in stream: Error grabbing logs: invalid character l after object key:value pair在网上看到的 解决方案: 找到你日志文件目录: docker inspect …

【前端首屏加载速度优化(一) :nginx 开启gzip压缩】

开启gzip压缩前后对比: nginx.conf具体配置: server {# 启动后的端口listen 8882;# 开启gzip压缩gzip on;gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain application/x-javascript…

12、模块化编程

模块化编程 1、传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响便朝着的思路 2、模块化编程:把各个模块的代码放在不同的.c文件…

TTS声音合成:paddlespeech、sherpa-onnx、coqui-ai

1、百度TTS文本合成语音 参考: https://aistudio.baidu.com/aistudio/projectdetail/5237474 https://www.jianshu.com/p/a7522ca6dec4 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/text_to_speech/README_cn.md 1)过程中需要下载的TTS 声学相关模型…