freeRTOS

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "driver/ledc.h"
#include "freertos/event_groups.h"
#include "esp_log.h"

EventGroupHandle_t Event_Group_Handle = NULL;
//创建任务组
void Event_Group_Creat(){
    Event_Group_Handle = xEventGroupCreate();
    if(Event_Group_Handle!=NULL){
        printf("YCP->Creat Success");
    }else{
        printf("YCP->Creat Fail");
    }
}
void key_scan(void *ptr){
    gpio_set_direction(GPIO_NUM_9,GPIO_MODE_INPUT);
    while(1){
        //测试事件组,0x01就是标志位
        if(gpio_get_level(GPIO_NUM_9)==0){
            xEventGroupSetBits(Event_Group_Handle,0x01<<1);
        }
        vTaskDelay(1000/portTICK_PERIOD_MS);
    }
}

void test(void *ptr){
    while (1){
        EventBits_t r_event = xEventGroupWaitBits(Event_Group_Handle,0x01<<1,pdTRUE,pdFALSE,1000/portTICK_PERIOD_MS);
        if(r_event&(0x01<<1)){
            ESP_LOGI("YCP","按键按下");
        }else{
            ESP_LOGI("YCP","按键没有按下");
        }
        vTaskDelay(10000/portTICK_PERIOD_MS);
    }
}

void app_main(void){
    led_init();//pwm初始化
    Event_Group_Creat();
    xTaskCreate(key_scan,"scan_name",2048,NULL,2,NULL);
    xTaskCreate(test,"test_name",2048,NULL,2,NULL);
}

 

posted @ 2022-12-30 21:45  松果工作室  阅读(116)  评论(0)    收藏  举报