前言:本系列笔记是在github上写的,然后直接复制粘贴过来。所以我没怎么加图片,也写的很随意,基本就是边学边写的笔记。
无关的吐槽:选这个板子也纠结了少许,不过现在看来应该影响不大,除了esp32,还有esp32-s2、s3,和esp8266。选了个折中的,还算不错。官方对于不同系列芯片有详细介绍,因为是国内的,网速很快,中文也很方便查看。
官方芯片概述链接
VS Code
安装的过程。
无关的吐槽:折腾许久,网上的教程有点五花八门,最主要的是版本都不一样。我现在(2021.04.28)下载到的软件包界面什么的都跟网传教程有差异。
- 类比之前学过的51内核的stc系列、arm内核的stm和rt系列、英飞凌内核的tc系列、RISC-V 指令集的ch32v103系列,这类都有专门的IDE可以方便快捷的一键编译和新建工程。
- 但是这次的 ESP 系列就有点特殊,本身官方并没有推出专门的IDE软件。只有基于 Eclipse 或 VS Code 的插件,又或是其他IDE安装额外的软件包来支持。
- 可以类比之前学过的ROS工程,在 ubuntu 上也是没有固定的IDE,编译也是靠终端用命令行敲 cmake 编译。
ESP-IDF
。很方便,而且支持浏览器下载,我使用IDM抓取下载链接再下载,很快就下载好了。除此外,还可以在 VS code
上用插件 Espressif IDF
下载。不过网速巨慢,我一直卡断,就放弃了。分享CSDN上比较详细的ESP-IDF教程:VS Code 配置ESP-IDF。我是先用官方的“安装器”下载安装了esp-idf和esp-tool工具集,然后再用vs code的插件选择已经安装好的目录。
vs code
和 Eclipse
都不是必须的,官方文档也没细说配置。只要安装了安装器里的内容。就可以直接使用指令编译和下载。官方中文教程文档,我选择完全安装,安装完毕后会生成3个快捷方式。
- 其中有两个终端的快捷方式,根据文档介绍,安装完毕后还需要配置一些环境变量。不过安装后生成的终端快捷方式中,已经设置好所有所需环境变量了。所以如果直接用这2个快捷方式启动终端的话,就可以使用指令编译工程。如果没有配置,又用普通终端,是无法使用编译指令的。
- 编译指令很特殊,是基于一个
.py
文件运行的。直接把例程抠出来,用指令编译,插上数据线打开串口(可能要更新驱动)flash下载。再打开串口查看效果。- 欧耶,如果成功了就表示最简单的使用已经可以了。
无关的吐槽:在折腾vs code编译环境的配置上,折腾了很久。现在也没成功,一会在尝试一下。根据文档介绍,只要下载了工具链,那使用IDE链接工具链,就可以编译了。按这思路那不是随便一款ide差不多都支持esp的编译?大胆的想法,之后很好研究一下,顺便增长一下对工具链的理解。
另外,入门时,也听说可以使用第一章教程就是想说明:折腾那么久还没弄好这个编译环境,如果不在意的话,安装完官方的工具链直接上命令行编译下载算了。Android
快捷使用。使用官方工具安装器安装时还会额外安装一个简易版的Eclipse
?也是需要自己配置的……还没弄好。
- ESP32开发 0.windows Vscode开发环境搭建,基于esp-idf-V4.2 | Cmake | Vscode插件。我有一点很疑惑的,我看教程的tool工具和idf都是放开下载的。但是我其实从官方那下载的是一体的安装包。看dalao的截图,也能看到,虽然我的tool安装界面没那么多选项,基本一路下一步,不过最后也是同样出现了,分别安装tool和idf的目录。那为什么还要自己单独下载idf啊???这点还是不懂。
- 乐鑫ESP32开发 1.Vscode创建新工程,编译,下载烧录,监视端口,点亮一个LED。大佬很好的总结了一下编译下载流程,并吐槽不知道为什么
vs code
编译慢,而还有配置问题。所以dalao推荐使用官方配置的cmd编译下载,而vs code就只用作编写代码,这就有我当初写ros程序的感觉。
vs code
不能编译esp32工程,我注意到报错内容和cmake
相关。我就搜索相关内容,然后实现了在vs code
上用cmake
指令编译c++
文件并生成了exe
文件,在终端里运行也是可以的……相当于折腾了半天把vs6.0
的功能在vscode上实现了……但是依旧还是不能编译esp32工程。不过起码错误信息变了……我安装了cmake后就弹出了指引错误了。没安装之前还不会有错的……在vscode和cmake的配置上,学习了这篇文章:VSCode CMake 安装与配置详解。需要注意几点:
- 下载安装可能超时,重新尝试下载安装就好了。
- 安装完成后要手动设置环境变量才可以使用指令
gcc -v
查看。- 不知道为什么不能使用
make -v
指令,倒是可以使用cmake -help
,和文章描述不一样。- 安装完毕后要在vscode里配置,文章没有提到一点,除了选了链接器,还要选择“生成的构建文件是什么”,找到一篇笔记:VSCode cmake tools插件报错,是这样描述的。是添加在
cmake tools
插件的json
文件里,设置面板也有单独设立,可以找找:"cmake.generator": "MinGW Makefiles"
.
cmake tools
还是找不到我的esp工具链,手动想在配置文件json
里加,自己又不会。幸好,找到了一篇笔记:Visual studio Code 安装 CMake 踩坑日志. 无法找到你的 新安装的编译工具 kit,解释了为什么工具没有自动搜索我电脑已安装的工具链,原来把原有的json
删除了让系统重新生成就可以了。按F1输入
cmake:configure
就可以看到这个文件,应该也可以手动改这个文件,也可以手动把它删了让系统创建自动再生成一个,就扫描到我电脑安装的其他工具链了。如果还是找不到,可以检查有没有添加环境变量。(操作的步骤越堆越多,我都不知道哪一步才是必须的,哪一步是多余的了。所以只能把所有流程都记录一下。)
我不愿放弃,非要整好这个编译环境不可,然后再尝试找帖子文章,看看有没有漏掉的操作。想起来之前看官方文档时,在最后有介绍一种被抛弃的编译方法,我返回去看看。发现被抛弃的就是使用make指令编译的方式,和现在最直接的不同就是把make
换成了idf.py
后面的附加选项指令没怎么变。这么想起来之前看的几篇文章说不定都是这种旧的方式,因为文章中提到的sysm32
文件夹完全找不到,而且编译的提示界面也不太一样。
又找了一篇教程:esp32 window下v4.0版本初试及vscode配置。再回顾错误提示Warning: python interpreter not running from IDF_PYTHON_ENV_PATH
,我想起来之前看官方文档时有提到一个关于python版本的问题,还特别提醒3.7和3.8的区别。我想是不是我的版本没选对,我在安装文件夹下也确实看到3.8和3.7两个关键词的文件夹。
再细看手册发现,有“工具链的自定义设置”一章,和我现在挣扎的事情就有点像……“建议直接使用我们提供的预编译二进制工具链”。还有“快速入门(传统 GNU Make)”一章,里面提到了“第四步:安装 Python 软件包”。我之前也在个人教程里看到这一步……之前没运行成功就暂时跳过了……现在才发现这里面提到的python包就是我报错时说找不到的文件……我也发现之前运行失败的原因,使用$IDF_PATH
没有效果,我直接把绝对路径丢进去就成功。 不过还是有提示我有安装冲突……
我急忙重启vscode试试可不可以,之前我发现esp插件的删除功能还是可以用的……把编译文件夹删掉,就是其他功能都提示错误。这一次我重启vscode后发现居然开始产生了编译文件,很激动,以为是成功了……结果自己单独点编译键还是提示失败。点主页键还是提示找不到那几个包…………!!!结合刚刚的esp32 window下v4.0版本初试及vscode配置,可以得知,其实这些快捷键的功能都是.json文件生成的。(话说开始对vscode的配置文件刮目相看,居然是可以直接改变软件界面的。)现在开始把目光着重在找不到宏定义上。
export.ps1
或export.bat
是会报错的,实际也不能运行idf.py。查看编译信息,惊人的发现和vscode的错误信息一样。都是指代idf4.2_py3.7_env
,折腾了一下,发现esp插件的设置中,原来可以修改默认端口号和python目录。不过改了之后还是不可以。一直指向3.7版本的,而且报错信息还提醒我要更新,我复制指令运行(发现其实很多解决方法都写在报错信息中啊……)时,提示我pip版本低,我震惊,我昨天才更新了。使用pip -V
查看版本和目录,发现原来又是指向了工具链中3.7版本的(话说我发现原来我电脑默认是3.7版本的)。一气之下,直接把idf4.2_py3.7_env
文件备份后就删了,一劳永逸……结果真的就解决了默认终端不能编译的问题,只要把配置文件先运行一下,就可以实现在默认终端也使用idf.py
指令了。然后兴奋的在vscode里尝试,还是失败了,不可以……。发现把idf4.2_py3.7_env
文件删了后,vscode里的终端也可以编译和下载了。虽然快捷按钮还是不行。这时就开始怀疑起,其实是不是是按钮自己的问题。结合大佬的笔记:esp32 window下v4.0版本初试及vscode配置,对vscode的c_cpp_properties.json
和tasks.json
有了了解,我开始怀疑是不是我没改按钮的配置而已,或是这个配置我还没写……折腾我那么久。另外,明白按钮其实就是通过json
文件在vscode里调用命令执行,那在vscode里运行的时间,应该和在普通终端运行的时间是一样的才对。实际上,确实是感觉vscode慢了一点,不知道是不是错觉。
再者,就是使用vscode编程,esp库是在idf文件内的,通过c_cpp_properties.json
链接过去。这对我不太友好,如果可以还是希望基本的库文件能在工程目录给我看,这样我还可以改动。之后再看看ESP-IDF Eclipse
的配置,如果可以,说不定会用它多一点。比较符合我对c的编写习惯。
CMake
是不是也是多余的,不过安装之后,每vscode打开工程就会在输出打印基本信息,感觉好像还是有点用。 还发现,vscode左下角选择python解释器处,还多了1个esp工具中的版本。之前看明明没有的。真的不知道删了一个文件夹,刷新了多少东西2333。tasks.json
文件不是自动生成了,是要自己配置的,我删了后就没有出现了。诶呀,我之前,vscode
里有好几个json文件,我删了后还想着会生成默认的呢。 没想到没有了。其中想找到esp插件的json
文件也找不到的,从设置里进入得到是settings.json
。我看之前的hollw的例程里有,就想到是不是esp例程里特有的,就再导出一个例程。发现果然如此,而且每次重新打开一个工程就会要选择工具链,同时cmake
开始解析json
里指定的头文件,链接工程中导入的头文件。这下子就不会出现找不到头文件的情况了。不过这一开始的编译属于预加载文件,并没有真的编译,也没有生成bin文件,不可以下载。这下,我可以根据json
里的配置修改内容,开始真正的单片机编程学习之路了。