互斥信号量是一个特殊的二值信号量类型,用来控制访问多个任务之间共享的资源。允许使用互斥需要在FreeRTOSConfig.h中配置configUSE_MUTEXES为1。
在一个互斥访问的场景,互斥信号量可以被认为是一个令牌,只有拥有这个令牌的任务才能访问某一资源。因此任务在访问这一资源时,要先取得令牌,才被允许访问资源。而在访问资源完毕后,要将令牌放回到原来的位置,供其他任务或自己获取。
这时候我们可能会有疑惑,这个功能不是与之前介绍的二值信号量相类似吗,这里我要提两点不同..
- 互斥信号量在使用完毕后,必须要返还
- 而用于同步的二值信号量在使用完毕后不用再放回,只需等待下次事件触发

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
使用互斥信号量之前必须先创建这个信号量,使用xSemaphoreCreateMutex()创建互斥信号。创建互斥信号不需要传入参数,返回一个互斥信号的句柄

互斥信号量在FreeRTOS中用于控制任务间共享资源的访问,它需要在配置文件中开启。与二值信号量不同,互斥信号量在使用后必须返还。创建互斥信号量使用xSemaphoreCreateMutex(),获取使用xSemaphoreTake(),释放使用xSemaphoreGive()。中断中使用特殊API。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



