第十二周 第三天 2020-01-15

FreeRTOS信号量

二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一些细微的差别, 互斥信号量拥有优先级继承机制, 二值信号量没有优先级继承。 因此二值信号另更适合用于同步(任务与任务或任务与中断的同步)。二值信号量其实就是一个只有一个队列项的队列,这个特殊的队列要么是满的,要么是空的。


二值信号量创建函数
释放信号量
获取信号量
优先级翻转问题

互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一个钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其他的任务就可以拿着这个钥匙去使用资源。

    互斥信号量可以可以降低优先级翻转带来的影响,但是互斥信号量不能用于中断服务函数:

    1、互斥信号量有优先级继承的机制,所以只能用在任务中,不能用于中断服务函数。

    2、中断服务函数中不能因为要等待互斥信号量而设置阻塞时间进入阻塞态。


互斥信号量创建函数

互斥信号量的获取和释放与二值信号量和计数型信号量一样!

软定时器:结束后会有因定时器产生的函数;用调度器切换;分为单次/循环两种模式;是么时候用是么时候开启

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容