freertos通讯---信号量与队列

本文介绍了FreeRTOS中的信号量,包括二进制信号量、计数信号量和互斥锁的创建。重点讲解了信号量释放和获取的原理,提到了优先级反转恢复机制,并指出互斥锁仅适用于任务,不适用于中断。同时,文章指出由于信号量基于队列实现,效率可能不高,建议使用任务通知作为更高效的通讯方式。
摘要由CSDN通过智能技术生成

哈喽,又见面了.

一.信号量

1.1创建二进制信号量

#define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE )

上篇队列已经提到,信号量也是用队列实现的.这里semSEMAPHORE_QUEUE_ITEM_LENGTH是0,最后一个参数queueQUEUE_TYPE_BINARY_SEMAPHORE其实没有使用.

1.2创建计数信号量

#define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) )

计数信号量和二进制其实一样

 

1.3创建互斥锁

#define xSemaphoreCreateMutex() xQueueCreateMutex( queueQUEUE_TYPE_MUTEX )

互斥锁创建稍有不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值