STM32信号量

目录

什么是信号量?

什么是二值信号量?

二值信号量相关 API 函数

1. 创建二值信号量

2. 释放二值信号量

3. 获取二值信号量

实操

实验需求

cubeMX配置​编辑

代码实现

计数型信号量

什么是计数型信号量?

计数型信号量相关 API 函数

实操

实验需求

cubeMX配置

代码实现 

互斥量

什么是互斥量?

什么是优先级翻转?

互斥量相关 API 函数

实操

实验需求

cubeMX配置

代码实现 


什么是信号量?

信号量( Semaphore ),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代
码段不被并发调用。
信号量这个名字,我们可以把它拆分来看,信号可以起到通知信号的作用,然后我们的量还可以
用来表示资源的数量,当我们的量只有 0 1 的时候,它就可以被称作二值信号量,只有两个状
态,当我们的那个量没有限制的时候,它就可以被称作为计数型信号量。
信号量也是队列的一种

什么是二值信号量?

二值信号量其实就是一个长度为 1 ,大小为零的队列,只有 0 1 两种状态,通常情况下,我们用
它来进行互斥访问或任务同步。
互斥访问:比如门钥匙,只有获取到钥匙才可以开门
任务同步:比如我录完视频你才可以看视频

二值信号量相关 API 函数

函数
描述
xSemaphoreCreateBinary()
使用动态方式创建二值信号量
xSemaphoreCreateBinaryStatic()
使用静态方式创建二值信号量
xSemaphoreGive()
释放信号量
xSemaphoreGiveFromISR()
在中断中释放信号量
xSemaphoreTake()
获取信号量
xSemaphoreTakeFromISR()
在中断中获取信号量

1. 创建二值信号量

SemaphoreHandle_t xSemaphoreCreateBinary ( void )
参数:
返回值:
成功,返回对应二值信号量的句柄;
失败,返回 NULL

2. 释放二值信号量

BaseType_t xSemaphoreGive( SemaphoreHandle_t xSemaphore )

参数:
xSemaphore :要释放的信号量句柄
返回值:
成功,返回 pdPASS
失败,返回 errQUEUE_FULL

3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈学弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值