电子说
信号量另一种通常的用法是用于任务间的同步机制。
二进制信号量,可以想成是一个布尔类型,只有0 和 1。
两个任务公用一个信号量,一个任务用于产生信号量,另一个任务使用此信号量。
比如:按键按下亮灯,再按一次灯灭。按键任务中按键按下时,将信号量置1。
亮灯任务中将信号量置0。 用二进制信号量可以减少判断语句的资源消耗。
API函数:
SemaphoreHandle_t xHandler; 创建二进制Handler xHandler = xSemaphoreCreateBinary(); 创建一个二进制信号量 返回NULL,或者handler xSemaphoreGive(xHandler); 生产者+1 xSemaphoreTake(xHanlder, timeout); 消费者-1 返回pdPASS, 或者pdFAIL 示例如下:
系统判断,会占用CPU的很大资源,以上示例中判断按键是否按下,可以用中断处理。在中断中必须调用函数名以FromISR结尾的函数。示例如下:
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !