【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】用arduino可以开发esp32用esp-idf也可以开发esp32这都没有问题。只是相对而言arduino封装了很多的硬件细节如果不想知道这些硬件细节那么用arduino开发esp32还是非常不错的一个选择。但是一旦涉及到底层的东西比较多尤其是用到wifi和bt建议还是用esp-idf开发比较好。1、创建目录、创建项目前面我们已经讨论过如何安装esp-idf、如何安装vs code、以及如何安装插件这里就不再赘述。只是个人在创建esp项目的时候还是非常建议直接通过命令行进行创建非常方便也非常简单。idf.py create-project my_project cd my_project idf.py set-target esp32 idf.py build2、接着用vs code进行修改和烧入用命令行处理大体上也是可以的只是稍微有点繁琐。所以创建好了项目之后这个时候就可以用vs code进行修改和编译了。因为我们之前安装了idf插件所以插件很快就能认识到这是一个esp32的项目所以后续就可以通过插件修改代码、烧入image了。3、最简单的代码因为创建的内容很少所以就会看到两个CMakeLists.txt一个在顶部一个在main目录下面。除了这两个CMakeLists.txt还有一个my_project.c也是比较简单的。当然要编译这个项目需要很多其他的第三方文件这一切都被idf.py隐藏掉了不影响我们继续开发和研究。my_project.c里面最重要的函数就是app_main大家可以把它看成是一个普通的main函数这也是可以的。4、利用ai添加代码esp32本身是用的非常多的模块所以网上类似的代码非常多。这个时候哪怕我们没有esp的开发经验但是有c的基础这种情况也是可以用ai进行开发的。比如让ai添加串口、添加gpio的闪烁、添加定时器等等这些都是可以的。#include stdio.h #include freertos/FreeRTOS.h #include freertos/task.h #include driver/gpio.h #include esp_timer.h // Change this to the GPIO connected to your LED2 #define LED2_GPIO GPIO_NUM_2 // Timer handle static esp_timer_handle_t led_timer NULL; // Timer callback function, called every 500ms static void led_timer_callback(void *arg) { static bool led_state false; // Toggle LED state led_state !led_state; gpio_set_level(LED2_GPIO, led_state ? 1 : 0); // Print current state via UART if (led_state) { printf(LED ON\n); } else { printf(LED OFF\n); } } void app_main(void) { // 1. Configure the GPIO as push-pull output gpio_config_t io_conf { .pin_bit_mask (1ULL LED2_GPIO), .mode GPIO_MODE_OUTPUT, .pull_up_en GPIO_PULLUP_DISABLE, .pull_down_en GPIO_PULLDOWN_DISABLE, .intr_type GPIO_INTR_DISABLE }; gpio_config(io_conf); // Initially turn LED off gpio_set_level(LED2_GPIO, 0); // 2. Configure and start the periodic timer const esp_timer_create_args_t timer_args { .callback led_timer_callback, .name led_blink_timer }; esp_timer_create(timer_args, led_timer); // Start timer with period 500ms (500,000 microseconds) esp_timer_start_periodic(led_timer, 500 * 1000); // 3. Main task can now perform other work or just stay idle while (1) { vTaskDelay(pdMS_TO_TICKS(1000)); // Keep the task alive } }如上面代码所示这就是一个ai写的代码。里面包含了gpio怎么设置esp_timer怎么创建以及printf怎么打印。整个流程还是比较简单的。唯一需要注意的地方就是module的引脚配置这一块是比较容易出错的地方。其他地方问题都不算很大。5、烧入与测试一般来说写好代码之后就可以直接烧入了。esp32和stm32、51一样本身也支持串口烧入。注意烧入的时候com口不要被占住这就可以了。很快通过插件的烧入按钮就可以正常烧入、正常打印这样esp-idf的开发方法基本就算掌握了为我们后面进一步的开发打下基础。