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下面会输出各个文件的烧录位置。我这里因为进行了别的操作,所以看不到了。
我会51单片机看数据手册编写器件驱动,想要要玩esp32是要先去了解esp8266吗,用那种开发环境会比较合适
官方建议乐鑫自己的开发环境,ESP-IDF