stm32——freeRTOS计数型信号量

一、什么是计数型信号量?

         计数型信号量相当于队列长度大于1的队列,因此计数型信号量能够容纳多个资源,这是在计数型信号量被创建的时候确定的。

二、计数型信号量相关的api函数

函数
        描述
xSemaphoreCreateCounting()
        使用动态方法创建计数型信号量。
xSemaphoreCreateCountingStatic()
        使用静态方法创建计数型信号量
uxSemaphoreGetCount()
        获取信号量的计数值

计数型信号量的释放和获取与二值信号量相同参考上一篇博文

stm32——freeRTOS二值信号量_now的博客-CSDN博客 

一般常用动态方式创建计数型信号量

SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount,UBaseType_t uxInitialCount);

参数:

        uxMaxCount:可以达到的最大计数值

        uxInitialCount:创建信号量时分配给信号量的计数值(默认为0)

返回值:

        创建成功,返回对应计数型信号量的句柄;

        失败返回NULL

三、实际代码演示

需求:

        创建一个计数型信号量,按下KEY1则释放信号量,按下KEY2获取信号量。

cubeMX 

1、创建任务

 2、创建计数型信号量

 keil5

 

 

 测试结果:最多可放入3个信号量

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值