05_FreeRTOS信号量

信号量

信号量简介

信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。

  • 1.1 二值信号量
    二值信号量既可以用于临界资源访问也可以用于同步功能。
  • 1.2 计数信号量
    二进制信号量可以被认为是长度为 1 的队列,而计数信号量则可以被认为长度大于 1的队列,信号量使用者依然不必关心存储在队列中的消息,只需关心队列是否有消息即可,计数信号量数值表示可用资源的数目。
  • 1.3 互斥信号量
    互斥信号量其实是特殊的二值信号量,由于其特有的优先级继承机制从而使它更适用于简单互锁,也就是保护临界资源。
  • 1.4 递归信号量
    ### 三级目录
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

常用信号量API函数

创建信号量函数
创建二值信号量 xSemaphoreCreateBinary()
在这里插入图片描述
创建计数信号量 xSemaphoreCreateCounting()
在这里插入图片描述
信号量删除函数 vSemaphoreDelete()
在这里插入图片描述
在这里插入图片描述
信号量释放函数
xSemaphoreGive()

在这里插入图片描述

xSemaphoreGiveFromISR()
在这里插入图片描述
信号量获取函数
xSemaphoreTake()
在这里插入图片描述
xSemaphoreTakeFromISR()
在这里插入图片描述

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值