一、概述
在STM32单片机的开发工作中,我们需要提前搭建可支持代码编写、烧录和调试的开发环境,STM32的开发环境的IDE环境一只需要安装“Keil”即可完成,再辅助一些编辑工具如:“Source Insight”、“Visual Studio Code”等。
ESP32C3-WROOM-02U模组的开发环境有两种:
1、Windows IDF离线开发环境:
就是在Windows系统中安装乐鑫官方提供的IDF工具,该工具集成了编译工程、烧录工程固件和运行监控等功能,进行代码开发的话可以安装编辑工具“Source Insight”、“Visual Studio Code”等。
2、Visual Studio Code 中安装“ESP-IDF EXPLORER”
以Visual Studio Code 为基础安装“ESP-IDF EXPLORER”扩展,在这种方式下可以直接在VSCode中进行代码的编写、编译、烧录和调试,而且还支持Windows、Linux、macOS等系统下的开发,是比较方便的一种方式。
本文章只记录Windows IDF离线开发环境的搭建流程。我选择的是“IDF离线开发环境+VSCode”。
更多的学习可以参考:快速入门 - ESP32-C3 - — ESP-IDF 编程指南 release-v5.0 文档
二、Windows IDF离线开发环境的搭建
1、下载IDF 离线安装包
到乐鑫官方网站下载离线包:https://dl.espressif.cn/dl/esp-idf/
根据自己的开发WiFi模组选择支持的版本,可以从https://github.com/espressif/esp-idf
的“ESP-IDF 版本和 SoC 兼容性”表参考要下载那个IDF版本:
我的是ESP32C3-WROM-02U,所以可以选择下载“v4.3~v5.1”版本的IDF。
2、IDF 离线安装包安装
点击“esp-idf-tools-setup-offine-5.0.2.exe”进入安装引导
选择“简体中文”
点击“应用修复”
执行完成后,点击“下一步”
选择安装的路径,可自定义,不要有中文空格之类的,也可以默认安装到C盘
选择要安装的组件,我这里是全选
核对信息,没问题后就点击“安装”
在安装结束前会提示安装驱动,选择“安装”
之后安装完成
点击“完成”会打开两个终端,到这里IDF就安装好了。电脑桌面也会有两个终端的快捷键,我在开发的时候一般使用“PowerShell”这个终端。
三、IDF终端编译、下载“hello_world”例程
在PowerShell终端中
使用‘ls’指令,可以看到在目录:D:/IDF/Espressif/frameworks/esp-idf-v5.0.2中有很多文件,这个就是esp-idf-v5.0.2的工程结构,我们可以使用“examples”中的例程进行开发。
输入指令'cd examples/get-started/hello_world'将位置定位到“hello_world”例程中,
接下来就可以编译和将编译的.bin文件下载到WiFi模组中运行了。
输入idf.py set-target esp32c3设置对应WiFi模组型号
有如下提示表示设置成功
输入 idf.py menuconfig进入配置例程参数
主要修改的参数是WiFi模组的flash大小
我用的是4M flash,故如下选择
设置好后保存、退出,这个时候sdkconfig会更新设置。
当我们要将新的功能或者有重大修改的工程(比如自定义了.CSV文件)烧录到WiFi模组时最好是擦除一下flash,保证WiFi模组对flash的分区正确。擦除指令:idf.py -p [port] erase_flash,编译指令:idf.py build
如出现下图所示内容表示编译成功
输入指令idf.py -p [port] flash就可以将.bin文件下载到WiFi模组中了,如果想要监视运行现象则输入指令idf.py -p [port] flash monitor就可看到运行的日志。
上图可以看到程序打印了“Hello world!”,按组合键 Ctrl+]就可以退出监控台
这里使用的是我自己设计的板子,可做开发板,也可以做烧录板,因为是采用烧录探针设计的PCB封装使得WiFi模组可拆卸更换。
板子如下所示,是基于嘉立创EDA设计的,喜欢的朋友可以私信我(或者到我主页的“下载”中的“ESP32C3-WROOM-02U 开发板&烧录板二合一的制板资料”下载)拿Gerber PCB制板文件和BOM,就可以直接在嘉立创免费制版了。原理图和PCB图不打算开放朋友们可以自己设计。
四、总结
IDF离线开发环境搭建相对简单,不涉及各种环境变量的设置,也不需要其他的依赖,因为它已经集成好了,开发只要专注代码编写和功能开发就好了,实属是不错的。