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 版权协议,转载请附上原文出处链接和本声明。