FreeRTOS在ESP32中的特殊性
任务相关函数
队列相关函数
本篇内容主要有:
信号量相关函数
计时器相关函数
事件组相关函数
任务通知相关函数
信号量reertos / include / freertos / semphr.h
信号量是操作系统中重要的一部分,信号量一般用来进行资源管理和任务同步, FreeRTOS中信号量又分为
l 二值信号量、
l 计数型信号量、
l 互斥信号量、
l 递归互斥信号量
不同的信号量其应用场景不同,但有些应用场景是可以互换着使用的
创建二值信号量创建一个新的二进制信号量(二值信号量)实例,并返回一个句柄,通过该句柄可以引用新的信号量。
通过使用现有队列机制创建信号量的函数。队列长度为1,因为它是二进制信号量。数据大小为0,因为实际上没有任何存储-重要的是队列是否为空或已满(二进制信号量是否可用)。
这种信号量可用于任务之间或中断与任务之间的纯同步。信号量不必一经获得就退还,因此一个任务/中断可以连续地“提供”该信号量,而另一任务/中断则可以连续地“获取”该信号量。因此,这种信号量不使用优先级继承机制。有关不使用优先级继承的替代方法,请参见xSemaphoreCreateMutex()。
东小东使用说明:
二值信号量即可以实现事件的计数,通过xSemaphoreGive()相关函数释放信号量也就是将计数值加一,当前其最大值为1,通过xSemaphoreTake()相关函数获取信号量也就是将计数值减一,当xSemaphoreTake()最终将计数值减到0时,将会触发xSemaphoreTake()参数的超时等待。
SemaphoreHandle_t xSemaphoreCreateBinary ()