esp32c3使用esp-idf框架多种点灯(带注释)

第一:在官方列程中随便创建一个项目(hello列程)

第二:删除main文件中的代码,开始写第一种点灯程序

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"

//

#define LED_PIN_NUM GPIO_NUM_12

void app_main(void)
{
          
   
printf("================点灯开始啦================
");
    int32_t led_static = gpio_reset_pin(LED_PIN_NUM); //将 gpio 重置为默认状态(选择 gpio 功能、启用上拉并禁用输入和输出),返回一个状态
    gpio_set_direction(LED_PIN_NUM,GPIO_MODE_OUTPUT); //设置gpio状态,仅输出,仅输入,输出和输入
    while (1)
    {
          
   
        gpio_set_level(LED_PIN_NUM, 0); //设置gpio为低电平
        vTaskDelay(200); //延迟函数
        printf("翻转灯的高低电平
");
        gpio_set_level(LED_PIN_NUM, 1);设置gpio为高电平
        vTaskDelay(200);
    }
     }

第二种结构体方式

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"


#define LED_PIN_NUM GPIO_NUM_12 //选择板子上led灯的gpio
#define GPIO_OUTPUT_PIN_SEL  (1ULL<<LED_PIN_NUM)    // 配置GPIO_OUT位寄存器
void app_main(void)
{
          
   


    gpio_config_t led_config;       //GPIO 通用配置。
    led_config.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
    led_config.mode = GPIO_MODE_OUTPUT;               //设置GPIO为输出模式
    led_config.pull_up_en = GPIO_PULLUP_DISABLE;       //禁用GPIO上拉电阻                                         */
    led_config.pull_down_en = GPIO_PULLUP_ENABLE;   //启用 GPIO 下拉电阻                            */
    led_config.intr_type = GPIO_PIN_INTR_DISABLE; //禁止中断

    if (gpio_config(&led_config) == ESP_OK) //初始化gpio状态并判断是否设置成功
    {
          
   

        while (1)
        {
          
   
            gpio_set_level(LED_PIN_NUM, 1);     //设置高电平
            vTaskDelay(200);    //延迟函数
            gpio_set_level(LED_PIN_NUM, 0);      //设置低电平
            vTaskDelay(200);
        }

    }else
    {
          
   
        printf("gpio初始化出错啦
");
    }
}
经验分享 程序员 微信小程序 职场和发展