FreeRTOS 笔记 信号量 记录2

本文介绍了FreeRTOS中的计数型信号量,包括创建计数型信号量的两种函数:xSemaphoreCreateCounting()和xSemaphoreCreateCountingStatic(),并详细解析了它们的参数和返回值。计数型信号量的最大计数值和初始值是其关键特性。
摘要由CSDN通过智能技术生成

计数型信号量

我们把队列项长度大于1的队列叫做计数型信号量,同二值信号量一样我们只需要关心队列是否为空就行。

创建计数型信号量函数

xSemaphoreCreateCounting()这个函数是通过动态内存管理来分配内存的,实质是一个宏。正真完成创建的函数是xQueueCreateCountingSemaphore()函数原型如下
SemaphoreHandle_t xSemaphoreCreateCounting(UBaseType_t uxMaxCount,
UBaseType_t uxInitialCount)
uxMaxCount : 计数信号量最大计数值,当信号量等于此值时释放信号量就会失败。
uxInitialCount : 计数信号量初始值
返回值:
NULL 计数型信号量创建失败
其他值:计数型信号量创建成功,返回计数型信号量句柄

xSemaphoreCreateCountingStatic()使用这个函数时使用的内存需要自己分配,实质是一个宏。正真完成创建的函数是xQueueCreateCountingSemaphoreStatic()函数原型如下
SemaphoreHandle_t xSemaphoreCreateCountingStatic(UBaseType_t uxMaxCount,
UBaseType_t uxInitialCount,
StaticSemaphore_t* pxSemaphoreBuffer)
uxMaxCount : 计数信号量最大计数值,当信号量值等于此值的时候释放信号量就会失败。
uxInitialCount: 计数信号量初始值
pxSemaphoreBuffer: 指向一个StaticSemaphore_t 类型的变量,用来保存信号量结构体。
返回值
NULL&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值