BAT32G137国产项目通用第七节:FreeRTOS 互斥量

主题:互斥量的使用比较单一,因为它是信号量的一种,并且它是以锁的形式存在。在初始 化的时候,互斥量处于开锁的状态,而被任务持有的时候则立刻转为闭锁的状态。互斥量

更适合于:

1.可能会引起优先级翻转的情况。 递归互斥量更适用于。

2.任务可能会多次获取互斥量的情况下。这样可以避免同一任务多次递归持有而造
成死锁的问题。
3.多任务环境下往往存在多个任务竞争同一临界资源的应用场景,互斥量可被用于对临
界资源的保护从而实现独占式访问。另外,互斥量可以降低信号量存在的优先级翻转问题
带来的影响。
比如有两个任务需要对串口进行发送数据,其硬件资源只有一个,那么两个任务肯定
不能同时发送啦,不然导致数据错误,那么,就可以用互斥量对串口资源进行保护,当一
个任务正在使用串口的时候,另一个任务则无法使用串口,等到任务使用串口完毕之后,
另外一个任务才能获得串口的使用权。
另外需要注意的是 互斥量不能在中断服务函数中使用,因为其特有的优先级继承机制
只在任务起作用,在中断的上下文环境毫无意义。
互斥量例子如下:

static TaskHandle_t AppTaskCreate_Handle = NULL;/* 创建任务句柄 */
static TaskHandle_t LowPriority_Task_Handle = NULL;/* LowPriority_Task任务句柄 */
static TaskHandle_t MidPriority_Task_Handle = NULL;/* MidPriority_Task任务句柄 */
static TaskHandle_t HighPriority_Task_Handle = NULL;/* HighPriority_Task任务句柄 */
SemaphoreHandle_t MuxSem_Handle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢吃火锅的泪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值