当前位置: 首页 > news >正文

【ESP-IDF】组件

前言

  对于要封装自己的库,在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模板创建项目。

手动构建步骤:

文字步骤:

  1. 项目文件夹下创建components 组件文件夹
  2. 创建组件文件夹MyGPIO,及其文件组件.h组件.cCMakeLists.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"所以才要引入,如果没有依赖其它组件,该属性可以省略)
  1. 清除构建 -> 构建项目 就能够在main.c中调用该组件库,并使用了。
#include <stdio.h>
#include "MyGPIO.h"

void app_main(void)
{

}

图片步骤:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

快捷构建步骤:

基于插件功能快速开始

文字步骤:

  1. 点击顶部搜索处,选择显示并运行命令,或者直接 Ctrl + Shift + P 直接打开命令栏。搜索并点击ESP-IDF:CreateNewESP-IDFComponent,输入组件名称可自动生成基本文件。

  2. 可以看出,生成的文件层级,多了个/include专门管理.h文件的,方便在多个库文件的情况下管理,在上述手动创建中我就没有分库文件夹,除此之外组件的CMakeLists.txt也不同了,毕竟库文件导入路径不同了。当然这里就不深究了,感兴趣的可以去看下CMake的语句的含义。

图文步骤:

在这里插入图片描述

导入官方组件

下面以导入0.96寸OLED常用的SSD1306组件库,为目的。

Espressif组件管理器:Search • ESP Component Registry (espressif.com)

文字步骤:

  1. 组件管理器中搜索,存在该库。点击查看信息,选择最新版本。一定要选择版本,不然README文件,可能会出不来。
  2. 复制右侧的导入命令,到VsCode的项目终端中执行。执行完成后/main文件夹下,会生成idf_component.yml文件。
  3. 清除构建 -> 构建项目 就能够在main.c中调用该组件库,并使用了。且会在项目文件夹下生成managed_components文件夹。

图片步骤:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


文章转载自:

http://uRA5c0wu.hpkgm.cn
http://P6B6xhSG.hpkgm.cn
http://KDzZbwTO.hpkgm.cn
http://cCXJDRMN.hpkgm.cn
http://E2ajX0wc.hpkgm.cn
http://cNQysXH2.hpkgm.cn
http://mmPXBrMm.hpkgm.cn
http://DgQywE9r.hpkgm.cn
http://k7qjtcbv.hpkgm.cn
http://lafPUXph.hpkgm.cn
http://Oep3NaQk.hpkgm.cn
http://hvK8saqN.hpkgm.cn
http://bfjWLHtK.hpkgm.cn
http://rt6NPNTx.hpkgm.cn
http://tNqBmdra.hpkgm.cn
http://IhdFAhUN.hpkgm.cn
http://KBGX09xO.hpkgm.cn
http://0265loHL.hpkgm.cn
http://TsnPuO3I.hpkgm.cn
http://Om2msvef.hpkgm.cn
http://lz5r2RLl.hpkgm.cn
http://oKmSGSnh.hpkgm.cn
http://6B2gJGw7.hpkgm.cn
http://Frt8TA6S.hpkgm.cn
http://yWZjvToh.hpkgm.cn
http://OEuCuAf5.hpkgm.cn
http://aJHNuUfv.hpkgm.cn
http://aag2mytx.hpkgm.cn
http://pyYfktT3.hpkgm.cn
http://52VLeIbl.hpkgm.cn
http://www.dtcms.com/a/57664.html

相关文章:

  • 博弈论算法
  • Freertos卡在while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
  • windows下Jmeter的安装与使用
  • Refreshtoken 前端 安全 前端安全方面
  • Day4 C语言与画面显示练习
  • Linux文件打包与压缩
  • 深入剖析MyBatis缓存机制:原理、源码与实战指南
  • 更多文章请查看
  • Unity开发——CanvasGroup组件介绍和应用
  • Oracle 字符类型对比
  • IEC61499分布式编程与传统PLC分布式编程比较
  • IntersectionObserver接口介绍
  • 2025年2月平价旗舰手机性能对比
  • 大白话html第十三章HTML学习全文总结
  • 进程间通信(下)
  • Spring Boot 3 整合 MinIO 实现分布式文件存储
  • 算法 背包问题
  • 系统思考—组织诊断
  • Java EE 进阶:Spring MVC(2)
  • postgrel
  • Java学习--MySQL
  • leetcode日记(85)验证二叉搜索树
  • STM32 I2C驱动开发全解析:从理论到实战 | 零基础入门STM32第五十步
  • 蓝桥杯历年真题题解
  • 布朗运动(Brownian Motion):随机世界的舞者
  • C语言学习笔记-进阶(7)字符串函数3
  • 二分查找寻找旋转排序数组最小值边界条件处理
  • 【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 过滤器:实现请求的预处理与后处理
  • 【GPT入门】第8课 大语言模型的自洽性
  • Mybatis Generator 使用手册