石家庄建站培训,网站建设与管理小论文,最专业的网站制作公司,烟台网站建设诚信臻动传媒ESP-IDF Vscode ESP32 开发环境搭建以及开发入门 文章目录ESP-IDF Vscode ESP32 开发环境搭建以及开发入门1. 前言2. 下载开发工具3. 配置工具4. 创建工程5. 解决vscode找不到头文件#xff0c;波浪线警告6. 添加自己的组件6.1 组件说明6.2 添加项目组件6.3 添加扩展组件7. …ESP-IDF Vscode ESP32 开发环境搭建以及开发入门 文章目录ESP-IDF Vscode ESP32 开发环境搭建以及开发入门1. 前言2. 下载开发工具3. 配置工具4. 创建工程5. 解决vscode找不到头文件波浪线警告6. 添加自己的组件6.1 组件说明6.2 添加项目组件6.3 添加扩展组件7. 解决组件内引用 ESP-IDF 内函数、头文件报错创作不易转载请注明出处 Tips: 虽然笔者采用的是Linux开发环境但是Windows开发环境的亦可阅读所述内容与系统关联性不大尤其是后文介绍的如何将自己的文件加入到工程解决头文件找不到等问题无论哪种系统均会存在。 1. 前言
关于ESP32的开关环境搭建其实有很多种其中如果使用 Vscode 的话通常大家会直接使用vscode里面的Espressif IDF插件然后通过插件安装对应的配置工具搭建开发环境使用此方法确实比较方便操作也比较简单但是此方法存在一定的缺陷使用此方法搭建的环境不方便维护ESP-IDF的版本升级切换不方便
使用 Espressif IDF 安装环境在 ESP-IDF 目录下除了存放了 ESP-IDF 工具以外编译工具链也丢在了这个里面在IDF目录下使用git查看执行 git status 即可发现两种文件混合在了一起会导致无法单独维护当想要升级ESP-IDF版本的时候就必须要把环境全部重新安装一遍而安装的时候下载又特别慢所以这个过程会变为一个非常麻烦的事情
本文采用的方法称之为ESP-IDF Vscode开发方法此方法成功的将 ESP-IDF 工具与编译工具分离因此可以单独维护关于ESP-IDF的版本切换可直接使用git切换即可十分的方便同时编辑器还是采用Vscode编写代码还是很方便
此外本文除了阐述如何搭建开发环境之外还记载了博主关于ESP32开发过程中的相关笔记主要介绍了如何采用ESP32的开发风格开始搭建我们自己的工程进行开发。
tips: 推荐使用最新发布版本的 ESP-IDF最新的修复了许多有关问题 踩过的坑就不要踩了 T…T
2. 下载开发工具
下载 IDF 工具mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git下载 Vscode 软件安装Vscode插件 Espressif IDF注意这里下载好就行了不要去配置
3. 配置工具
配置 IDF 工具为所有ESP32设备环境cd ~/esp/esp-idf
./install.sh设置环境变量cd ~/esp/esp-idf
./export.sh但是每个terminator窗口都得像第2步一样运行下export.sh指令对应的命令窗口才有相应的idf环境变量非常麻烦因此需要让其智能一点在 ~/.bashrc 里面加一个宏命令 运行vi ~/.bashrc打开 ~/.bashrc 在最后添加一行命令 alias get_idf. $HOME/esp/esp-idf/export.sh之后每次打开一个新terminator窗口只需要输入 get_idf 命令即可给对应的 terminator 添加 IDF 的环境变量
4. 创建工程 使用 idf 工具创建工程 进入工程目录设置目标设备如开发esp32则输入idf.py set-target esp32 使用vscode打开编辑
5. 解决vscode找不到头文件波浪线警告
问题描述
默认使用IDF创建工程之后可使用 idf.py build编译工程但是使用vscode打开工程添加头文件之后vscode会提示找不到头文件以及相应宏、函数无法跳转这是由于vscode没有配置导致
解决方案
安装 Espressif IDF 插件 进入IDF目录重新运行 install.sh 脚本此脚本会配置 Espressif IDF 插件建议这么操作因为我运行 ./install.sh 的时候插件是以及装好了的cd ~/esp/esp-idf
./install.sh使用vscode打开相应工程 注意vscode打开的是对应的工程路径而不是包含多个工程的路径按快捷键 Ctrl Shift P 打开命令行 找到 ESP-IDF:Add vscode configuration folder点击一下即可自动生成对应的vscode配置文件 点击之后可以看到工程目录下多了一个 .vscode 目录并产生了相应的文件其中c_cpp_properties.json 内描述的就是对应的头文件路径 之后可以看到波浪线警告消失了对应的文件也可以通过 ctrl鼠标左键 打开
6. 添加自己的组件 说明本博客ESP-IDF版本 V5.0 6.1 组件说明
当我们开始真正使用ESP32进行开发的时候我们肯定期望将我们的程序按照各自的功能分解成各自的 .c 文件这样方便编辑、管理和移植如GPIO的驱动在单独编写的 drv_gpio.c 内实现那么针对ESP32如何实现类似的功能呢
之前编写 stm32 的时候有IDE的支持IDE自动帮我们完成但是这里Vscode仅仅只是一个代码编辑器关于代码的编译esp32采用的是Cmake工具来完成 因此我们需要补充相关的cmake文件来实现。
ESP32的组件分为几大类均记录在cmake的变量COMPONENT_DIRS内
ESP-IDF内部组件 IDF_PATH/components扩展组件 EXTRA_COMPONENT_DIRS项目组件 PROJECT_DIR/components
ESP-IDF内部组件也就是官方提供的组件在ESP-IDF目录内 扩展组件工程目录一般长这样
- myProject/- CMakeLists.txt- sdkconfig- components/ - component1/ - CMakeLists.txt- Kconfig- src1.c- component2/ - CMakeLists.txt- Kconfig- src1.c- include/ - component2.h- main/ - CMakeLists.txt- src1.c- src2.c- build/官方文档是这么解释的可选的 “components” 目录中包含了项目的部分自定义组件并不是每个项目都需要这种自定义组件但它有助于构建可复用的代码或者导入第三方不属于 ESP-IDF的组件。或者您也可以在顶层 CMakeLists.txt 中设置 EXTRA_COMPONENT_DIRS 变量以查找其他指定位置处的组件。
因此扩展组件是我们自行添加的目录之后通过在顶层CMakeLists.txt中设置 EXTRA_COMPONENT_DIRS变量指定对应的位置 项目组件是工程目录下components目录下的组件默认没有这个目录可自行创建
需要注意的是各组件不同同名否则会发生覆盖组件的编译顺序为 ESP-IDF内部组件 - 扩展组件 - 项目组件后编译的组件会覆盖之前编译的同名组件此特点也有优点允许将组件复制到项目目录中再修改以覆盖ESP-IDF组件如果使用这种方式ESP-IDF 目录本身可以保持不变
6.2 添加项目组件
创建 components 目录创建组件 方法一使用idf命令创建组件idf.py -C 组件集目录地址 create-component component name 方法二创建对应的目录并创建对应的源文件复制其他组件的CMakeLists.txt文件 在组件内编写对应的程序即可 清除工程之后重新编译 idf.py clean - idf.py build
6.3 添加扩展组件 一定注意创建的组件名不要和系统组件名相同否则会覆盖造成报错除非你主动为之可通过搜索 COMPONENT_DIRS 中的目录列表以查找项目的组件搜索方法在CmakeList.txt中把这个变量打印出来 创建自己存放组件集的组件目录之后在组件目录下创建组件不能直接创建组件目录如这里创建组件集目录user在user目录下创建gpio驱动组件目录gpio复制其他组件的CMakeLists.txt 修改组件目录内的CMakeLists.txt 修改顶层CMakeLists.txt添加EXTRA_COMPONENT_DIRS指定注意此添加需要在project()之前因为执行project指令的时候已经创建工程了 编写对应的drv_gpio.c drv_gpio.h并在main.c中引用之后编译测试**先清除工程之后重新编译 idf.py clean - idf.py build** 编译测试成功
7. 解决组件内引用 ESP-IDF 内函数、头文件报错
当我们创建好单独的组件后将在单独的组件内编写各自的应用如上我们创建了 gpio 组件那么相应将会在gpio组件中编写对应的gpio驱动驱动中肯定会要应用ESP-IDF内的组件但是当我们编译的时候会提示找不到相应文件。
我们的驱动程序如下 编译报错../user/gpio/drv_gpio.c:2:10: fatal error: driver/gpio.h: No such file or directory
这是由于依赖问题没有解决导致我们编写的drv_gpio.c文件没有指定依赖那么编译器将不知道去哪里找这个driver/gpio.h文件因此报错所以我们需要给它加上依赖修改对应组件的CMakeLists.txt文件增加 REQUIRES driver 指定依赖driver组件 那么有人肯定会问为什么在默认的main组件内这么写不会报错呢这是由于main组件是一个特殊组件工程的$ENV{IDF_PATH}/tools/cmake/project.cmake 默认为其添加了所有依赖
注意修改CMakeLists.txt后清除工程再重新编译 idf.py clean - idf.py build 创作不易转载请注明出处
关注、点赞收藏可快速查收博主有关分享