
因up本人最近心血来潮,对ESP32产生了极大的兴趣,遂准备着手学习。经过up本人的调研,ESP32目前主流的开发方式有Arduino,Micropython和ESP-IDF,Arduino和Micropython虽然入门简单,但据说没办法发挥ESP32的全部性能,这让up这个性能党完全没办法接受,遂选择ESP-IDF这个官方推出的ESP32开发框架。(本学习笔记面向对象为未来遗忘的自己)
操作系统:Windows 11
IDE:CLion 2024.1.1
SoC:ESP32-S3(N16R8)

ESP32系列芯片对比

ESP32-S3资源

ESP32系列芯片命名规则

ESP32-S3各模组命名
up本人用的模组是ESP32-S3-WROOM-1-N16R8,通过上图可以知道,其外置了16MB的Flash,同时内置了8MB的PSRAM,并且SPI模式为Octal,开发板如图所示

ESP32-S3开发板
ESP-IDF的下载地址为
https://dl.espressif.cn/dl/esp-idf/?idf=4.4
打开网址后的界面如图所示。

ESP-IDF下载界面
选择适合自己的下载即可,up下载的是图中的最新版,按需安装完成后,进入刚刚安装好的文件夹内,右键选择idf_cmd_init.bat文件,选择用记事本或别的具有文本编辑功能的软件打开,up这里用的是vs code。

用vs code打开idf_cmd_init.bat
在文件的开头添加这两行代码,方便CLion检索IDF的路径,该路径应根据自己实际安装的目录来设置,添加完成后保存即可。

添加IDF路径
配置好IDF路径后,若安装过程中勾选了新建快捷方式,桌面应该会出现这两个命令行工具。

ESP-IDF的命令行工具
前者简洁而后者功能强大,当然对于初期的学习,用CMD命令行就足够了。点开ESP-IDF CMD。若ESP-IDF安装无误,会出现如下界面。

打开ESP-IDF CMD
在E盘新建ESP32_CODE文件夹用于存放个人项目。

新建文件夹
在命令行输入cd E:\ESP32_CODE,可以看到命令行的当前路径已经指向刚刚新建的用于存放项目的文件夹ESP32_CODE。

进入存放项目文件夹
接着输入命令
idf.py create-project esp_demo01
即可完成第一个项目的创建,这里项目名称是esp_demo01。

创建第一个项目
回到ESP32_CODE文件夹内,可以看到已经有了刚刚创建的第一个项目esp_demo01。

创建第一个项目成功
创建好后的项目内部如图所示。

项目文件
返回上一级,右键esp_demo01,选择用CLion打开,打开后的界面如下图所示。

用CLion打开刚刚新建的项目
首先点击Manage toolchains设置工具链。

点击Manage toolchains
接着点击+号新建一个叫ESP32的MinGW编译器,添加好ESP-IDF的环境文件后点击OK。

配置编译器
选择刚刚配置好的名叫EPS32的编译器。

选择编译器
接着配置好环境变量,如图所示,其中芯片型号需要根据自己实际使用的芯片配置,串口号需要插上开发板在设备管理器中查看。

配置环境变量
全部配置好后点击OK,可以看到主文件中只有一个入口函数app_main。

入口函数
如图所示,切换到app用以构建项目。

构建项目
接着点击小锤子构建项目。

构建项目
初次构建项目时间较长,静静等待一会儿即可完成。

项目构建完成
将开发板连接电脑,切换到flash并点击小锤子用以将程序烧录到开发板中。

点击小锤子烧录程序
稍作等待,即可烧录成功,当然由于主程序还没有写任何代码,因此暂时看不到任何现象,不过可以确定,到此为止,开发环境已经搭建成功。
回到项目的目录,可以看到目录里多出了两个文件夹和一个配置文件。

项目目录
其中.idea用于存放CLion的配置文件,cmake-build-debug-esp32用于存放 CMake 构建系统生成的所有临时文件和输出文件,sdkconfig是esp32的配置文件。
由于我们目前未对芯片作任何配置,因此刚刚烧录进去的程序用的是默认的配置,该配置没办法完全利用up目前使用的开发板的性能,因此需要在menuconfig中对芯片进行配置。
重新打开IDF命令行工具,切换到工程目录下。

命令行路径切换到工程目录
输入idf.py menuconfig命令。

输入idf.py menuconfig命令
等待一会儿后会出现如图所示页面,这就是menuconfig配置界面。

menuconfig界面
在该界面下,ENTER键表示进入下一集目录或选中,ESC表示返回上一级,进入到Serial flasher config目录下,可以看到其默认的配置Flash SPI mode为DIO,Flash size为2MB。

Serial flasher config界面
Flash SPI mode的可选项有4个,分别是QIO,QOUT,DIO,DOUT,四种模式的区别如下图所示。

Flash SPI mode四种模式的区别
可知QIO模式的速度最快,因此将Flash SPI mode更改为QIO,由于up使用的模组外置了16MB的Flash,因此将Flash size更改为2MB,更改后的界面如下图所示。

更改后的Serial flasher config界面
设置完成后按ESC返回到初始界面后,再选择Partition table进入分区表的设置,如图所示,在该界面下有三个可编辑项。

分区表设置界面
进入第一个可编辑项,这里可以设置如图所示的四种分区表类型。

可供选择的分区表类型
我们可以看到,IDF默认的设置是第一个。四种分区表的描述如下图所示。

分区表类型
前期学习时用默认的选项就行了,后期可以根据自己的需要设置对应的分区表。
返回初始界面,选择Component config,即进入ESP的相关组件配置界面,进入后往下滑动,找到ESP System Settings,如图所示。

进入ESP System Settings
这里默认设置的CPU主频为160MHz。

默认CPU频率
但是我们的ESP32-S3最高主频可达240MHz,故将其设置为240MHz。

重新设置CPU频率
回到初始界面,点击键盘上的S键弹出确认保存弹窗,无需修改文件名,直接ENTER即可。

确认保存
保存成功后如图所示。

保存成功
回到项目文件夹中,可以看到此处已经有了两个配置文件。

两个配置文件
其中带.old后缀的为编辑前的旧的配置文件,而不带后缀的为我们刚刚配置并保存好后的新的配置文件。
到此,我们已经完成了所有基本配置,可以开始尽情的编写代码啦,当然,如果你以后有想更改的设置,也能回到menuconfig再次修改。
用CLion重新打开文件并切换到app对文件进行构建,由于我们对芯片进行了重新配置,因此此时会对工程进行重新编译。

重新构建项目
切换到flash将程序重新烧录到芯片,刚刚的配置就生效啦。

烧录程序
[1] https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/index.html(ESP-IDF 编程指南 - ESP32-S3 - — ESP-IDF 编程指南 v5.1 文档 (espressif.com))
[2] http://www.openedv.com/docs/boards/esp32/index.html(正点原子ESP32开发板 — 正点原子资料下载中心 1.0.0 文档 (openedv.com))
[3] https://www.cnblogs.com/seekwhale13/p/17549765.html(使用Clion开发esp32 - seekwhale13 - 博客园 (cnblogs.com))