ESP32_初始化GPIO驱动点亮LED

ESP32的功能还是比较多的,要全面了解的话需要花费比较多的时间和精力。咱们依然从最基本的点亮LED开始。同时,建议使用者要有ESP8266的SDK开发的经验,否则很难理解。

先说开发环境,使用的是安信可提供的一体式开发环境1.0,下载链接可以在官网或者我的公众号:单片机爱好者 里面获取。

然后是SDK,使用的是esp-idf,版本为3.2。

当安装安信可的一体化开发环境1.0的时候,它会自动将3.2版本的SDK放到电脑上。导入SDK到eclipse里。打开如下路径:

/ESP32_LED/examples/get-started/blink/main/blink.c

其中,ESP32_LED是我修改的SDK的名称,方便识别。打开main文件夹下的blink.c文件后,可看到官方已经提供了一点亮LED的例程:

#define BLINK_GPIO CONFIG_BLINK_GPIO

void app_main(void)
{
    /* Configure the IOMUX register for pad BLINK_GPIO (some pads are
       muxed to GPIO on reset already, but some default to other
       functions and need to be switched to GPIO. Consult the
       Technical Reference for a list of pads and their default
       functions.)
    */
    gpio_pad_select_gpio(BLINK_GPIO);
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
    while(1) {
        /* Blink off (output low) */
	printf("Turning off the LED\n");
        gpio_set_level(BLINK_GPIO, 0);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        /* Blink on (output high) */
	printf("Turning on the LED\n");
        gpio_set_level(BLINK_GPIO, 1);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

其中,“#define BLINK_GPIO CONFIG_BLINK_GPIO”这里定义了我们想要点亮的GPIO的名称,如果你直接查找“CONFIG_BLINK_GPIO”的宏定义的话,你是找不到的。

注释里说可以在menuconfig里面修改,但是我找了一圈,没有找到。这里先给自己埋个坑,后面解决了这个问题再来填。

menuconfig里找不到,可以换一种方式,直接在这里修改,改成多少?

看你的原理图怎么接的,我这里的原理图如下:

可以看到是GPIO26,所以上面那一行改成:

#define BLINK_GPIO 26

接下来,看“void app_main(void)”。这是这个工程的主函数,主要实现两部分功能:

1、对GPIO26进行初始化,设置为推挽输出;

2、在while(1)中,循环拉低、拉高该IO,中间有延时,同时打印输出相关信息。

保存、清理、编译、下载一条龙,然后重新上电,可以看到LED开始闪烁。如果这时候下载的串口连接到电脑上,打开串口助手,波特率115200,可以看到相关的打印信息。

很简单,打完收工!

注意事项:ESP32的程序烧录位置和8266有些一不样,编译完成以后,console下面会输出各个文件的烧录位置。我这里因为进行了别的操作,所以看不到了。

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据