FreeRTOS学习4--计数型信号量

SemaphoreHandle_t   MySemaphoreHandle_led;/*创建变量*/

MySemaphoreHandle_led = xSemaphoreCreateCounting(10,0);/*创建计数型信号量*/

//LED0
void led0_task(void *pvParameters)
{
    u8 num = 0;
    while(1)
    {
        LED0=~LED0;

        xSemaphoreGive(MySemaphoreHandle_led);
        xSemaphoreGive(MySemaphoreHandle_led);
        xSemaphoreGive(MySemaphoreHandle_led);
        xSemaphoreGive(MySemaphoreHandle_led);

        num = uxSemaphoreGetCount(MySemaphoreHandle_led);
            led_debug("num = %d",num);

        vTaskDelay(10000);
    }
}   

//LED1
void led1_task(void *pvParameters)
{
    u8 num = 0;
    while(1)
    {
            num = uxSemaphoreGetCount(MySemaphoreHandle_led);
            xSemaphoreTake(MySemaphoreHandle_led,portMAX_DELAY);

            led_debug("num = %d",num);
      LED1=~LED1;
            vTaskDelay(100);
    }
}

/**********************************
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 0
File: ..\HARDWARE\led_task\led_task.c, Line: 00023: num = 3
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 3
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 2
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 1
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 0
File: ..\HARDWARE\led_task\led_task.c, Line: 00023: num = 3
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 3
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 2
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 1
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 0
File: ..\HARDWARE\led_task\led_task.c, Line: 00023: num = 3
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 3
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 2
File: ..\HARDWARE\led_task\led_task.c, Line: 00038: num = 1
**********************************/

你可能感兴趣的:(FreeRTOS)