初识ESP32

自己买了一块ESP32的核心板来玩玩,据说这块MCU能跑的频率比较高,性能比较好,而且还集成了WiFi和蓝牙功能,开发工具也比较现代化。

两个月前自己配过用CMake取代Keil uVision的项目(其实底层还是通过命令行调用Keil带的那个MDK-Arm编译工具链),对CMake算是有一点点基础了解,再加上VSCode是现成的而ArduinoIDE没下载过,于是干脆就跳过ArduinoIDE for ESP,直接上手ESP-IDF开发。

什么是ESP-IDF?

从原教旨来说,ESP-IDF是乐鑫公司专门为他们的ESP系列MCU定制的一套命令行开发工具,集成了构建、烧录、配置、监视(调试)等等功能。ESP-IDF依赖CMake与Ninja来运行,这与我之前配过的Keil2CMake那个项目也一致,但是ESP-IDF的CMake中主要以ESP-IDF自己定义的一些特殊函数组成,比如idf_build_set_property()以及idf_component_register()等。

如何上手ESP-IDF?

虽然ESP-IDF需要依赖CMake、Ninja、Python等运行,但是我们并不需要把这些依赖都手动安装一遍(即使你真的手动安装了一遍,ESP-IDF也不会去调用它们的),因为ESP-IDF会自己给自己配一套它需要的环境。我们直接在VSCode的插件商店搜索”ESP-IDF”并安装,在安装好插件后会弹出一个欢迎界面,点击上面的”Configure Extension”按钮即可进入ESP-IDF的插件配置页面(如果没见到这个页面的话,在VSCode中按F1然后搜索”> ESP-IDF: configure ESP-IDF Extension”即可),在这里我们可以选用电脑上已下载好的ESP-IDF套件,也可以让它帮我们下载ESP-IDF套件。 Configure ESP-IDF 如果你是初次下载这个插件,电脑上并没有安装过ESP-IDF套件,可以直接点击”EXPRESS”来进行快速配置,或者点击”ADVANCED”来选择指定路径(更推荐这样做,毕竟谁都不希望有东西在自己电脑里拉屎);如果之后再打开别的ESP项目的时候还弹出这个界面让你配置插件,就可以直接选择”USE EXISTING SETUP”,快速复用之前的配置。初次下载的时候会比较慢是正常的,以后不用下载了就好了。

配置好之后,先试试烧一个最简单的示例代码。ESP-IDF会自带很多示例工程,找到之前安装ESP-IDF的文件夹,点进examples里面,找到get-started/hello-world,用vscode打开这个文件夹,就可以配置、构建并烧录你的第一个ESP32工程了。

打开文件夹之后在页面最下方根据你的开发板型号选择合适的编译与烧录配置。我是从不知名网店买的神秘核心板,应该是非官方型号。板上有CH340,并且看起来没有留JTAG的接口只有一个type-C,所以烧录方式选择的是UART,端口号就选择插上之后在设备管理器里会多出来的那一个,乐鑫设备目标填的是”esp32/custom board”,然后点构建项目、烧录项目就可以了,上手还是很简单的。

然而在这里我遇到了一点问题:ESP-IDF报告说COM5端口打不开。然而当我自己使用SSCOM之类的串口工具的时候,是可以通过COM5这个串口读到单片机里预先烧好的程序发出的信息的。自习检查ESP-IDF的汇报,发现它说的是MCU没有处在下载模式。经过查询资料发现,下载时单片机的GPIO0引脚需要被拉低,在这个状态下把EN拉低再拉高,才可以进入download mode。再查看核心板的原理图,发现GPIO0和EN这两个引脚分别由BOOT和EN这两个按键开关控制。按住BOOT按键,按一下EN按键,松开EN按键后让ESP-IDF开始烧录,就可以成功烧录了,这时候再松开BOOT按键也没关系了。

⚛️絮语

经过初步的体验,感觉ESP-IDF这一套开发环境的使用体验还是很不错的,不仅仅是表面上看起来更加专业,实际配合VSCode使用起来也比Keil uVision那种卡顿得要死的IDE好很多。