ESP32-C3 Vscode+ESP-IDF开发环境搭建 保姆级教程

1.背景

最近esp32的芯片很火,因为芯片自带了WIFI和BLE功能,是物联网项目开发的首选芯片,所以,我也想搞个简单的esp32芯片试试看。于是,我设计了一个简单的板子。如下

这块板子很简单,主要的电路来自于乐鑫的官方文档。

https://www.espressif.com.cn/sites/default/files/documentation/esp32-c3-wroom-02_datasheet_cn.pdf

设计完了之后,就找嘉立创免费做了板子,然后,找同事焊出来了。能不能跑,不知道,先上电,插上电脑,看看吧。

  1. 板子焊完之后的现象和问题

板子焊完了之后,我就将我的桌面电源,调成12V,1.5A,接到板子上的电源插口上去了,结果,发现电流很大,但是板子上的指示电源的LED却没有亮。板子差点烧掉了,幸亏我将电流设成了1.5A。经过检查之后,发现同事焊板子时,将所有的二极管都焊反了。上电之后,直通了,还好1.5A的电流不算很大,没有将板子烧坏。然后我请同事将板子上焊反的器件都重新焊了一遍。然后上电之后,电源正常了,LED亮了。

但是,将USB接口插上电脑之后,没有看到任何反应,没有出现要装驱动,也没有在设备管理器里出现串口或者任何的USB口,看来完蛋了,这块板子要变砖了。这块板子用的esp32模块是esp32-c3-wroom-02-h4, 刚焊上去时,里面是空的啥也没有,我看到这模块本身带USB口,所以,我以为USB口插上之后,可以识别出来,可以进行程序烧写了,结果啥也没有。

我也不知道是我的电路设计错了,还是焊错了,还是芯片或者器件有问题,于是,我在网上问,网上有人说,他的模块一接上电脑就能识别出USB口,就要求他下载程序。意思我的板子有问题,在乐鑫的官方论坛问,乐鑫的回答也是我的板子可能有问题。我也不知道咋搞。

后来,我忽然想到,我的板子上不是有串口引出到排针了吗?那我用USB转TTL的转接模块不是可以通过串口给这个esp32模块烧写程序吗?于是,我就试了一下,我找了个乐鑫的flash download tool, 这个工具可以接串口。我用USB转串口后,用这个工具烧了一个空程序,居然显示程序烧录成功,还显示了一些芯片的信息,如下:

我想,既然能显示芯片信息,那么串口的通信是OK的,我又用这工具,读了一下chipinfodump.

更是读到了芯片的信息,所以,我更相信,电路是没有问题的。那么写个简单的程序,试试看吧。

  1. Vscode+ESP-IDF开发环境的搭建

要写程序,自然要搭建开发环境。我是用vscode的,本来我想用platformIO, 但是一装插件,就装上了ESP-IDF的插件。我啥也没改,就按照esp-idf的缺省安装的。装这个插件比较花时间,半个多小时吧。安装的过程,很直接,就不说了, 总之,一路next就行了。

装好之后,怎么写程序犯难了。乐鑫的这个开发工具,搞得很复杂,让人无从下手。

没办法,只能从例程的blink下手了。

先就建立一个空文件夹,然后,从例程里的blink建立一个新工程,路径就选到这个新建的空文件夹。然后,下面的工具栏里按照下面这样选择

然后,点扳手,就能编译了,编译出来这样

但是,第一次编译的时候,要编译900多个文件,把我的电脑都编译得呼呼直响。编译了好长时间,就编译成功了。

点闪电,就能下载了。居然真的下载成功了。下载的时候,要将IO9接地。我的板子上是设计的跳线帽。所以,我插上跳线帽就行了。下载完成后,就拿掉跳线帽,按reset就可以执行了。

但是,烧到我的板子上没用,因为,例程里用的是LED灯带,而且是用的IO8,我的板子是自己设计的,不是乐鑫的开发板,IO口对不上。

乐鑫这里搞了一个sdkconfig,又让人觉得很烦,而且,例程里搞了一堆sdkconfig.defaults.xxx, 完全不知道咋搞,让人头大。不知道修改哪里好。

我将sdkconfig.defaults.esp32c3改成这样:

编译了,还是没用。

后来,我发现还是要改sdkconfig这个文件,改成这样:

这次发现编译之后,可以控制IO0了。

  1. 编译结果的检验

我将编译的程序,下载进开发板后,用示波器,看了一下IO0管脚的波形,因为我并没有接真的LED,只能看看波形了。波形是对的,如下:

这是我的板子,接着USB转串口的。

这是波形,好像是1s钟翻转。

这是串口monitor看到的结果。

5.到这里已经就OK了,但是, 我想说一下,在vscode的terminal里配置编译环境的问题。因为,乐鑫的开发文档里都是idf.py build, idf.py menuconfig, idf.py setchips, 什么的。看他们的开发文档完全不知道在说啥,我觉得这是乐鑫的问题。

所以,这里我就说一下怎么在vscode的terminal里来配置命令行环境。

第一步,在环境变量里,路径增加idf-python的路径

第二步,要进到你的esp-idf的安装目录,执行 install.bat,我的结果是这样的

第三步,执行export.bat

看到这个就说明可以编译了。

但是,这时的编译是在cmd里面的,还不是在vscode的terminal. 那么,下面要把它搞到vscode的terminal里面。

第四步,将cmd搞到vscode的terminal里面

那么,这时要在vscode里,点左下边的settings, 也就是[Ctrl+,], 然后在里面搜索terminal, 然后点编辑settings.json, 找到"terminal.integrated.profiles.windows" , 在这里面添加如下文字即可

添加完了之后,将vscode关掉,再重新打开。

第五步,结果检验

重新打开vscode之后,点terminal,这时出来的是powershell的,然后点右边的下拉箭头,选command prompt, 就出现cmd的窗口了。 因为刚刚的配置,出现cmd窗口是这样的。

看到没有?这就是export.bat执行后的内容。就是每次点command prompt就会自动执行export.bat帮你把命令行的环境设置好。并且回到你的项目目录。

那么,在这里输入 idf.py build 看看。

看到没有?命令行编译成功。可以下载了。

至此,vscode的terminal里,用idf的命令行也能编译了。这样看乐鑫的开发文档就不会有违和感了。

  1. 好了,大功告成,亲个嘴儿

(注:乐鑫的这个vscode的esp-idf开发环境感觉很不友好,我是花了2天时间,到处搜索,尝试,才搞通的。我觉得这个不友好会劝退很多开发爱好者,乐鑫应该好好改进一下,或者出一个视频,教人怎么配置)

相关推荐
狐凄1 小时前
Python实例题:基于边缘计算的智能物联网系统
python·物联网·边缘计算
不知所云,3 小时前
QT vscode cmake 编译 undefined reference to `vtable for 问题解决
vscode·qt·cmake
雪碧聊技术3 小时前
将VSCode的配置迁移到Cursor
vscode·cursor·配置迁移
时序数据说5 小时前
时序数据库双存储引擎技术解析
大数据·数据库·物联网·开源·时序数据库·iotdb
GISer_Jing10 小时前
ByteMD Markdown编辑器详细解释&修改编辑器默认样式(高度300px)
编辑器
我身高一米七三10 小时前
FSMC是什么?
物联网
根号三加载成功11 小时前
物联网控制器:一台顶N台!路由器、PLC控制器、网关、工控机……
物联网·云计算·智能家居·工业自动化
努力冲冲12 小时前
使用Visual Studio Code实现文件比较功能
ide·vscode·编辑器
橡木树的叶子16 小时前
正点原子STM32cubeide学习——TFTLCD(MCU 屏)实验
ide·stm32·单片机·嵌入式硬件·学习
卖猪肉的痴汉17 小时前
5.3 VSCode使用FFmpeg库
ide·vscode·ffmpeg