【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://www.rhkb.cn/news/30295.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AR配置静态IP双链路负载分担示例

AR配置静态IP双链路负载分担示例 适用于大部分企业网络出口 业务需求&#xff1a; 运营商1分配的接口IP为100.100.1.2&#xff0c;子网掩码为255.255.255.252&#xff0c;网关IP为100.100.1.1。 运营商2分配的接口IP为200.200.1.2&#xff0c;子网掩码为255.255.255.248&am…

视觉 Yolov11 环境配置(GPU版)

虚拟环境 首先用 anaconda 创建虚拟环境 根据自己需求创建一个虚拟环境 一个环境名叫 yolov11-py-3-8 就创建好了&#xff0c;后续的 yolov11 就会以这个环境去做深度学习&#xff08;这里不建议把环境的 py 版本设置到最新&#xff0c;设置个 3.8 或者 3.10 完全够用了 &am…

【微知】如何命令行查看Linux上连接的Wi-Fi信息?(iw dev wlp4s0 link ; information wireless)

背景 有时候没有桌面查看wifi链接&#xff0c;如何命令行查看 命令 iw dev wlp4s0 linkman手册&#xff1a; 实操 综述 如果查看信号强度、协商速率日常使用中比较常用。

从0到1入门Linux

一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…

[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署

标题&#xff1a;[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署 水墨不写bug 文章目录 一、无法拷贝类(class uncopyable)的设计解释&#xff1a;重要思想&#xff1a;使用示例 二、锁的RAII设计解释重要考虑使用示例 三、基于RAII模式和互斥锁…

登录固定账号和密码:账号:hmheima

接口文档 【apifox】面试宝典 个人中心-保存用户数据信息 - 教学练测项目-面试宝典-鸿蒙 登录固定账号和密码&#xff1a; 账号&#xff1a;hmheima 密码&#xff1a;Hmheima%123 UI设计稿 【腾讯 CoDesign】面试宝典 CoDesign - 腾讯自研设计协作平台 访问密码&#xff1…

Docker和DockerCompose基础教程及安装教程

Docker的应用场景 Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 CentOS Docker 安装 使用官方安装脚本自动安装 安装命令…

C语言学习笔记-进阶(7)字符串函数3

1. strstr的使用和模拟实现 char * strstr ( const char * str1, const char * str2); Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1. &#xff08;函数返回字符串str2在字符串str1中第⼀次出现的位置&#x…

Elasticsearch为索引设置自动时间戳,ES自动时间戳

文章目录 0、思路1、配置 ingest pipeline2、在索引映射中启用_source字段的时间戳3、使用 index template 全局设置时间戳4、写入测试数据5、验证结果6、总结 在使用 Elasticsearch 进行数据存储和检索时&#xff0c;时间戳字段是一个非常重要的组成部分。它可以帮助我们追踪数…

2024四川大学计算机考研复试上机真题

2024四川大学计算机考研复试上机真题 2024四川大学计算机考研复试机试真题 历年四川大学计算机考研复试机试真题 在线评测&#xff1a;https://app2098.acapp.acwing.com.cn/ 分数求和 题目描述 有一分数序列&#xff1a; 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前 …

韩国互联网巨头 NAVER 如何借助 StarRocks 实现实时数据洞察

作者&#xff1a; Youngjin Kim Team Leader, NAVER Moweon Lee Data Engineer, NAVER 导读&#xff1a;开源无国界&#xff0c;在“StarRocks 全球用户精选案例”专栏中&#xff0c;我们将介绍韩国互联网巨头 NAVER 的 StarRocks 实践案例。 NAVER 成立于 1999 年&#xff0…

VanillaVueSvelteReactSolidAngularPreact前端框架/库的简要介绍及其优势

VanillaVueSvelteReactSolidAngularPreact前端框架/库的简要介绍及其优势。以下是这些前端框架/库的简要介绍及其优势&#xff1a; 1. Vanilla 定义&#xff1a;Vanilla 并不是一个框架&#xff0c;而是指 原生 JavaScript&#xff08;即不使用任何框架或库&#xff09;。优势…

图像滑块对比功能的开发记录

背景介绍 最近&#xff0c;公司需要开发一款在线图像压缩工具&#xff0c;其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此&#xff0c;我们设计了一个对比组件&#xff0c;它允许用户通过拖动滑块&#xff0c;动态调整两张图像的显示区域&#xff0c;从而清晰…

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(十一) 实现服务端和客户端socketio 连接

1.后端部分 socketIO文档参考Socket.IO 首先在lib下新建socket.js文件 参考服务器API | Socket.IO import {Server} from socket.io; import http from http import express from "express"const app express() const server http.createServer(app) const io …

慕慕手记项目日志 项目从开发到部署多环境配置 2025-3-8

慕慕手记项目日志 项目从开发到部署多环境配置 2025-3-8 现在是已经到了课程的第十章了&#xff0c;开始进行配置项目环境了。现在要完成的任务是项目可以正常运行&#xff0c;而且可以自由切换配置&#xff0c;开发/测试。 下面是当前的目录结构图&#xff1a; 现在来解释一…

《Python实战进阶》No15: 数据可视化:Matplotlib 与 Seaborn 的高级用法

No15: 数据可视化&#xff1a;Matplotlib 与 Seaborn 的高级用法 Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一&#xff0c;支持跨平台运行&#xff0c;它是 Python 常用的 2D 绘图库&#xff0c;同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pand…

C++学习之格斗小游戏综合案例

C格斗游戏效果视频 1.案例简介 #include "broadSword.h" //构造函数 BroadSword::BroadSword() { FileManager fm; map<string, map<string, string>> mWeapon; fm.loadCSVData("Weapons.csv", mWeapon); //武器id string id …

LeetCodeHot100

1.两数之和 解题思路&#xff1a; 1.暴力解法 两个for循环解决问题 时间复杂度为 O(n2) class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {if (nums[i] nums[j] target) {…

大语言模型进化论:从达尔文到AI的启示与展望

文章大纲 引言大语言模型中的“进化论”思想体现遗传变异过度繁殖和生存斗争大模型“过度繁殖”与“生存竞争”机制解析**一、过度繁殖:技术迭代的指数级爆发****二、生存竞争:计算资源的达尔文战场****三、生存竞争胜出关键要素****四、行业竞争格局演化趋势**核心结论自然选…

Spring Boot自动装配原理

实例&#xff1a; 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置服务器 redis自动装配 原理&#xff1a; 一切都源于一个关键的注解…