前言
对于要封装自己的库,在ESP-IDF中,可以采用构建组件的方式导入,而不是单纯在文件夹下导入.h
和.c
文件,不然一旦要导入的文件过多,它们背后的依赖可能就会相互交叉,不在方便移除和复用。本文就分别讲述:构建自己组件
、导入官方组件
。基于VsCdoe+ESP-IDF V5.4.0环境。
相关链接:构建系统 - ESP32 - — ESP-IDF 编程指南 v5.4 文档 (espressif.com)、Search • ESP Component Registry (espressif.com)
构建自己组件
下面以封装官方的GPIO库为MyGPIO组件为目的。进入项目创建导向,配置为
template-app
模板创建项目。
手动构建步骤:
文字步骤:
- 项目文件夹下创建
components
组件文件夹 - 创建组件文件夹
MyGPIO
,及其文件组件.h
、组件.c
、CMakeLists.txt
# 下述省略其它无关文件,只列出操作相关文件结构
- MyProject/- components/- MyGPIO/- MyGPIO.h- MyGPIO.c- CMakeLists.txt
CMakeLists.txt内容:
idf_component_register(SRCS "MyGPIO.c"INCLUDE_DIRS "."REQUIRES driver )
idf_component_register
:这是一个 ESP-IDF 提供的宏,用于注册组件SRCS "MyGPIO.c"
:指定组件的源文件为MyGPIO.c
INCLUDE_DIRS "."
:指定组件的头文件目录为当前目录(.
表示当前目录)REQUIRES driver
:指定该组件依赖于driver
组件(因为要导入"driver/gpio.h"
所以才要引入,如果没有依赖其它组件,该属性可以省略)
清除构建
->构建项目
就能够在main.c中调用该组件库,并使用了。
#include <stdio.h>
#include "MyGPIO.h"void app_main(void)
{}
图片步骤:
快捷构建步骤:
基于插件功能快速开始
文字步骤:
-
点击顶部搜索处,选择显示并运行命令,或者直接
Ctrl
+Shift
+P
直接打开命令栏。搜索并点击ESP-IDF:CreateNewESP-IDFComponent
,输入组件名称可自动生成基本文件。 -
可以看出,生成的文件层级,多了个
/include
专门管理.h
文件的,方便在多个库文件的情况下管理,在上述手动创建中我就没有分库文件夹,除此之外组件的CMakeLists.txt
也不同了,毕竟库文件导入路径不同了。当然这里就不深究了,感兴趣的可以去看下CMake的语句的含义。
图文步骤:
导入官方组件
下面以导入0.96寸OLED常用的SSD1306组件库,为目的。
Espressif组件管理器:Search • ESP Component Registry (espressif.com)
文字步骤:
- 组件管理器中搜索,存在该库。点击查看信息,选择最新版本。一定要选择版本,不然
README
文件,可能会出不来。 - 复制右侧的导入命令,到VsCode的项目终端中执行。执行完成后
/main
文件夹下,会生成idf_component.yml
文件。 清除构建
->构建项目
就能够在main.c中调用该组件库,并使用了。且会在项目文件夹下生成managed_components
文件夹。
图片步骤: