FreeRTOS操作系统计数型信号量(七)

  • Post author:
  • Post category:其他


FreeRTOS总结




前言

有些资料中也将计数型信号量叫做数值信号量,二值信号量相当于长度为 1 的队列,那么

计数型信号量就是长度大于 1 的队列。同二值信号量一样,用户不需要关心队列中存储了什么

数据,只需要关心队列是否为空即可。

计数型信号量通常用于

事件计数



资源管理



提示:以下是本篇文章正文内容,下面案例可供参考



一、创建计数型信号量

在这里插入图片描述


1、函数 xSemaphoreCreateCounting()


此函数用于创建一个计数型信号量,所需要的内存通过动态内存管理方法分配。

SemaphoreHandle_t xSemaphoreCreateCounting(UBaseType_t uxMaxCount, 
UBaseType_t uxInitialCount )

参数:

uxMaxCount:

计数信号量最大计数值

,当信号量值等于此值的时候释放信号量就会失败。

uxInitialCount: 计数信号量初始值。

返回值:

NULL: 计数型信号量创建失败。

其他值: 计数型信号量创建成功,返回计数型信号量句柄。


2、释放计数型信号量

(与二值信号量一样)

xSemaphoreGive() 任务级信号量释放函数
xQueueGiveFromISR()。中断级信号量释放函数

3、获取计数型信号量*(与二值信号量一样)

xSemaphoreTake() 任务级获取信号量函数
xSemaphoreTakeFromISR() 中断级获取信号量函数



二、计数型信号量实验



核心代码

在这里插入图片描述

在这里插入图片描述



总结

计数型信号量同二值信号量相类似,二值信号量返回值类似0和1 ,计数型返回值是具体的获取值(即函数=句柄)。



版权声明:本文为qq_52572339原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。