FreeRTOS 二值信号量

本文介绍了FreeRTOS中的二值信号量,包括其在互斥访问和同步中的作用,以及创建、释放和获取信号量的详细步骤。二值信号量作为特殊的队列,适用于任务和中断的同步。新版本创建的信号量默认无效,需要通过xSemaphoreGive()进行释放,而获取信号量则由xQueueGenericReceive()等函数完成。
摘要由CSDN通过智能技术生成

参考 开发手册

二值信号量

简介

二值信号量通常用于互斥访问或同步,二至信号量没有优先级继承,更适合用于同步(任务与任务或任务与中断的同步)。
二值信号量其实就是一个只有一个队列项的队列,这个特殊的队列要么是满的,要么是空的,任务和中断不在乎队列中存的是什么消息,只需要知道这个队列是满的还是空的。可以利用这个机制来完成任务与中断之间的同步。

创建二值信号量

函数 描述
vSemaphoreCreateBinary 动态创建二值信号量,老版本中使用的API函数。
xSemaphoreCreateBinary 动态创建二值信号量,新版本。
vSemaphoreCreateBinaryStatic 静态创建二值信号量。

新版本的创建函数没有参数
参数:

xSemaphore  :保存创建成功的二值信号量句柄。
pxSemaphoerBuffer : 此参数指向一个StaticSemaphore_t类型的变量,用来保存信号量结构体。

返回值:

NULL : 二值信号量创建失败。
其他值 : 创建成功的二值信号量句柄。

旧版本:::当二值信号量创建成功以后调用函数xSemaphoreGive()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值