[ESP-IDF]创建自定义组件
本文介绍了在ESP-IDF环境下为ESP32S3创建自定义组件的完整流程。主要内容包括:1.新建项目并配置Flash和RAM大小;2.使用ESP-IDF工具创建自定义组件,修改CMakeList.txt文件引用官方组件;3.分享了快速查找组件的方法(如通过搜索工具定位头文件);4.解决了官方组件无法引用的问题(修改CMakeList.txt中的REQUIRES依赖项)。文章特别指出,创建组件后需正
目录
概述
我将使用ESP-IDF编程环境创建一个自定义组件并在新组件中引用官方的组件。
测试平台
芯片:ESP32S3
ESP-IDF版本:5.4.2
1.创建新项目
这没啥说的,按照下图顺序进行新项目的创建就行。

图1.1 创建新项目1

图1.2 创建新项目2

图1.3 创建新项目3
2.新项目配置
打开新项目的SDK配置页面,一般需要配置flash、ram大小,其他设置一般不常用,需要根据具体需求进行设置,我的板子(ESP32-S3-N8R2)就只需要修改Flash大小(8MB)和ram大小(2MB)。设置过程如下图所示:

图2.1 配置SDK的flash大小

图2.2 配置SDK的ram大小
在图2.2的操作后SDK的配置也就结束了,记得保存一下,这个"SDK 配置编辑器"页面可以不关闭,一直开着,不然关闭一次再打开,真心费时间得一直等待。
3.创建自定义组件(.c .h文件)
我习惯采用ESP-IDF提供的创建组件方法,这样还省事,所以我这里也就搞这一种。创建过程如下图所示:



在成功创建组件后,我们的CMakeList.txt文件已经被写好了,但没有引用官方组件库,所以我们这里就可以仅添加我们所需要的组件就行,方式如下:

修改后如下:


到这里自定义组件也就创建完毕了,可以正常进行编写、使用。
4.如何快速查看需要引用的组件
这里只是做一个补充,是我自己最近使用的一个查找组件的方式,但说到底最根本的还是翻官方文档,所以我这里说的方法不是很标准,仅仅是我使用的方式。
例如我想引入"esp_flash.h",但我直接在CMakeList.txt文件中写入"REQUIRES esp_flash"会报错,无法编译,因为习惯上我认为esp_flash是一个组件,但其实它并不是,后来我才知道它所属组件是spi_flash,我查找到它的方式也很粗暴,本质上"esp_flash.h"文件肯定在esp-idf的components文件夹中,那就可以直接在components文件中硬找esp_flash.h文件,但这太不切实际了,还会浪费时间,不过我使用everthing,那就是另一回事了,直接搜索如下:

这个方式比较奇葩,但也确实我感觉下来比查官方文档快一些。
奇怪BUG
1.官方组件无法引用
现象如下图所示

在新创建的hello_world工程无法直接调用官方的"driver/gpio.h"组件,这种情况的原因往往是出现在CMakeList.txt文件中,官方的这个示例,问题也出在CMakeList.txt文件中,解决如下:

这样解决我不知道合不合理,这也是我看别人的解决方式。。。不知道是否合理,知道情况的大佬欢迎评论区留言。
不过我后来又想了想,这可能就不是BUG,因为示例确实能跑,可能只是我自己认为的BUG。
更多推荐



所有评论(0)