不可被忽视的操作系统( FreeRTOS )【2】

FreeRTOS在ESP32中的特殊性

任务相关函数

队列相关函数

本篇内容主要有:

信号量相关函数

计时器相关函数

事件组相关函数

任务通知相关函数

信号量

reertos / include / freertos / semphr.h

信号量是操作系统中重要的一部分,信号量一般用来进行资源管理和任务同步, FreeRTOS中信号量又分为

l  二值信号量、

l  计数型信号量、

l  互斥信号量、

l  递归互斥信号量

不同的信号量其应用场景不同,但有些应用场景是可以互换着使用的

创建二值信号量

创建一个新的二进制信号量(二值信号量)实例,并返回一个句柄,通过该句柄可以引用新的信号量。

通过使用现有队列机制创建信号量的函数。队列长度为1,因为它是二进制信号量。数据大小为0,因为实际上没有任何存储-重要的是队列是否为空或已满(二进制信号量是否可用)。

这种信号量可用于任务之间或中断与任务之间的纯同步。信号量不必一经获得就退还,因此一个任务/中断可以连续地“提供”该信号量,而另一任务/中断则可以连续地“获取”该信号量。因此,这种信号量不使用优先级继承机制。有关不使用优先级继承的替代方法,请参见xSemaphoreCreateMutex()。

东小东使用说明:

二值信号量即可以实现事件的计数,通过xSemaphoreGive()相关函数释放信号量也就是将计数值加一,当前其最大值为1,通过xSemaphoreTake()相关函数获取信号量也就是将计数值减一,当xSemaphoreTake()最终将计数值减到0时,将会触发xSemaphoreTake()参数的超时等待。

SemaphoreHandle_t xSemaphoreCreateBinary ()

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzgwg.html