前言

最近在学习的过程中,推荐身边朋友使用\(ESP32\)但是由于\(ESP32\)官方并没有专门的IDE导致,身边很多朋友(包括我自己一开始也是)不知道如何入门\(ESP32\)

本片文章将从\(STM32\)的视角出发,给想入门\(ESP32\)的朋友提供了解\(ESP32\)的环境概念帮助,并教大家如何和\(STM32\)一样去开发和学习\(ESP32\)

\(ESP32\)环境不同与\(STM32\)\(STM32\)可以采用\(keil\)直接一体化的软件,编译,下载,调试。但\(ESP32\)目前没有同一的IDE可以直接调试\(ESP32\),故学习\(ESP32\)需要自行搭建开发环境,这也是为什么\(ESP32\)难于上手的原因。

ESP32环境认识与使用1.ESP32代码编译器选择

在学习STM32过程中,我们大多数采用keil进行开发,我们一般会把代码写在keil文本区,然后编译,编译结果显示在下方,我们可以根据编译结果进行修改代码错误。在此过程中我们用到了两个工具:

  • 文本编辑器
  • keil编译工具包。

举一反三,同样编译ESP32我们也需要这两种工具。这里我选择vscode作为我的文本编译器,ESP32-IDF为编译工具包。vscode作为一款插件丰富的代码编译器,是搭建许多开发环境的首选。而ESP-IDF可视为乐鑫官方提供给开发者的开发环境,例如keil分为ARM版,C51版,不同版对应不同单片机开发环境。ESP-IDF本质上是官方提供的基础库,可视为STM32的HAL库。但在提供库代码的基础上增加了编译环境,在此环境下进行编译开发,可以直接调用到官方的API接口。

2.编译终端的选择

上面说到,ESP-IDF会提供开发环境,提供开发环境的方法就是利用终端脚本,将基础库代码路径临时注册到你电脑的环境变量中,这样你在调用.h文件时就可以直接引用了。此时编译就要在刚刚创建完的终端里进行。乐鑫官方提供了默认的两个终端,分别为win10自带的CmdShell。这里可以将此终端集成到VScode里在其内部进行编译。但此方法会将VScode变成专门的ESP32的开发环境。若感觉兴趣可以参考这篇文章。

本人采用的是第三方的一个终端,主要是终端颜值比Win10自带的好看,而且有很多丰富的功能可以发掘——Tabby。采用第三方终端需要对终端有一定配置才能使用ESP32的开发环境。

建议新手还是使用官方提供的两个终端即可。

3.代码编译和烧录

现在已经完成了代码基本环境的搭建,下面将进行代码的编译,在\(STM32\)中我们编译和下载只需要点击软件界面下的几个小图标即可实现,但是,ESP-IDF只是一个代码底层库,所以,编译和烧录需要我们通过在编译终端栏处手动输入指令才可以实现。

基本概念已经介绍完了,下面介绍开发ESP32一整套流程。

ESP32开发流程1.创建一个新的工程

首先了解终端一个基础的命令:\(cd\)

\(cd\)意思是进入某某路径,如图。这里我们一般进入自己设置的ESP32的工程目录下,可以看到前面的路径已经变成的自己设置的地址。

接下来,我们输入指令:

idf.py create-project --path  

创建ESP32工程,创建完成后输入\(ls\)命令,即可查看到自己刚刚创建的文件夹。

然后我们进入到刚刚创建的目录下:

 cd .\test\ ls

也可以打开资源管理器看到所创建的内容

右键点击空白部分 选择通过Code打开

至此ESP32工程建立完成。

2.工程架构说明VScode必备插件

要正常使用VScode编译ESP32至少需要以下三个插件:

目录结构说明

这里以我自己的一个详细工程说明

C:.│  .gitignore│  CMakeLists.txt //ESP-IDF采用cmake链接工程│  README.md│  sdkconfig  //ESP-IDF配置文件│  sdkconfig.old│├─.vscode  // VScode配置文件│      c_cpp_properties.json│      settings.json│├─build  // 编译代码输出│├─components  //工程项目组件,类似于keil工程下分类的不同文件夹│  ├─dns_server  //每一个组件文件夹下必有一个CMakeLists.txt用于链接编程│  │      CMakeLists.txt│  │      dns_server.c│  │      dns_server.h│  ││  ├─web_server│  │      CMakeLists.txt│  │      index.html│  │      url.c│  │      url.h│  │      web_server.c│  │      web_server.h│  │      wifi.html│  ││  ├─wifi_nvs│  │      CMakeLists.txt│  │      wifi_nvs.c│  │      wifi_nvs.h│  ││  ├─wifi_softap│  │      CMakeLists.txt│  │      wifi_softap.c│  │      wifi_softap.h│  ││  └─wifi_station│          CMakeLists.txt│          wifi_station.c│          wifi_station.h│└─main //主函数文件夹        CMakeLists.txt        main_app.c        main_app.h

1.VScode配置文件夹说明

VScode界面下按下快捷键Ctrl+Shift+P打开命令输入菜单,点击如下选项,配置包含路径。

生成.vscode文件夹,在c_cpp_properties.json文件下配置,参考配置代码(通用)

{    "configurations": [        {            "name": "Win32",            "includePath": [                "${workspaceFolder}/**",                "${workspaceFolder}/build/config",                "${IDF_PATH}/components/**",                "${IDF_PATH}/components/freertos/include/**",                "${IDF_PATH}/components/driver/include/**",                "${IDF_PATH}/components/log/include/**",                "${IDF_TOOLS_PATH}/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/include/sys/**",                "${IDF_TOOLS_PATH}/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/include/**"            ],            "defines": [                "_DEBUG",                "UNICODE",                "_UNICODE"            ],            "compilerPath": "C:/System Tools/mingw64/bin/gcc.exe",            "cStandard": "gnu17",            "cppStandard": "gnu++14",            "intelliSenseMode": "windows-gcc-x64"        }    ],    "version": 4}

并且在系统环境变量中创建以下两个变量:路径为自己安装的ESP-IDF路径。

2.添加组件

打开ESP32特有终端,进入刚刚创建的工程下。使用指令创建组件:

idf.py -C components create-component test1

\(test1\)为组件名。

创建完成后如图:

此时,工程目录下生成了一个components文件夹,进入文件夹后,产生了刚刚创建的组件文件夹。

组件文件夹默认包含以下内容:可根据需要添加.c / .h​文件。

C:.└─test1    │  CMakeLists.txt    │  test1.c    │    └─include            test1.h

3.CMakeLists.txt文件编写规范

这部分较为繁琐,但并不复杂,可在使用的过程中摸索。

3.编译调试说明

接下来可以编译,下载了。

退回到刚才的工程根目录下,使用指令idf.py build​编译工程。初次编译时间较长,请耐心等待。

编译完成后即可使用指令idf.py -p PORT flash 烧录下载到单片机中 PORT为下载设备端口,ESP32目前官方提供的下载方式为串口下载。也可采用JTAG下载,但必须采用官方下载器,较为麻烦,这里不做推荐。

这样就可以愉快的开始你的ESP32之旅了。

补充:ES32_IDF指令说明1.基础指令

功能命令
配置界面idf.py menuconfig
清理工程idf.py fullclean
编译idf.py build
烧录下载idf.py -p PORT flash
监视端口idf.py -p PORT monitor
擦除整个flash并烧录下载idf.py (-p PORT) erase_flash
编译+烧录+监视idf.py -p PORT build flash monitor
设定目标芯片(默认ESP32)idf.py set-target

2.开始新项目

idf.py create-project --path  

以上命令会直接在 目录下创建一个名为 的新项目

3.创建新组件

idf.py -C components create-component 

该示例将在当前工作目录下的子目录 components 中创建一个新的组件。

如果在现有项目中通过将组件移动到一个新位置来覆盖它,项目不会自动看到新组件的路径。请运行idf.py reconfigure命令后(或删除项目构建文件夹)再重新构建。