ESP-IDF创建工程

在VScode用ESP-IDF创建ESP32工程

1.创建简单工程

1.加载环境后
ESP-IDF创建工程_第1张图片
注:加载环境后,可以用idf.py 查看相关命令
2.用idf.py create-project filename创建工程
ESP-IDF创建工程_第2张图片创建工程后,会出现如图所示的结构。在这里插入图片描述

3.进入刚刚创建好的工程下,配置目标芯片,我以ESP32为例
idf.py set-target esp32
ESP-IDF创建工程_第3张图片设置目标芯片后,会出现如图结构。
ESP-IDF创建工程_第4张图片其中build是编译过程中会出现的文件,sdkconfig是运行用于保存menuconfig的文件。
4.然后使用idf.py menuconfig。
5.接着就可以写代码然后用idf.py build 编译啦。

2.创建带组件的工程

- 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/

esp32标准树结构如图所示,只需按照类似结构创建我们的工程即可。
components” 目录中包含了项目的部分自定义组件,并不是每个项目都需要这种自定义组件,但它有助于构建可复用的代码或者导入第三方(不属于 ESP-IDF)的组件,或者也可以在顶层 CMakeLists.txt 中设置 EXTRA_COMPONENT_DIRS 变量以查找其他指定位置处的组件。
“main” 目录是一个特殊的组件,它包含项目本身的源代码。”main” 是默认名称,CMake 变量 COMPONENT_DIRS 默认包含此组件,但您可以修改此变量。

创建组件:
①idf.py create-compoent name:在当前目录下创建一个组件。
执行命令后出现如下结构,
在这里插入图片描述②idf.py -C components create-component my_component:在组件下创建组件。
ESP-IDF创建工程_第5张图片具体参考ESP32官网,API指南,构建系统章节。

创建自己的组件

①在工程创建一个文件夹用于存放自己的组件
ESP-IDF创建工程_第6张图片
例如,我的存放组件的文件夹是my_com
②创建一个bsp的组件,在组件中,include用于存放.h头文件,src用于存放.c文件
③创建一个components.mk文件用于指明路径
ESP-IDF创建工程_第7张图片

④在CMakeLists.txt文件中注册头文件路径和.c文件
ESP-IDF创建工程_第8张图片

模块化文件处理:
①在main目录下创建inc、src文件分别存放.h、.c文件
然后在main目录下的CMakeLists.txt文件夹中

idf_component_register(SRCS "./src/mygpio.c"
                            "./src/mytimer.c"
                    INCLUDE_DIRS "."
                                 "./inc")

在SRCS “加入自己的路径下的.c文件”
在INCLUDE_DIRS “加入.h文件”
注:…/标识上一级目录下,./表示本级目录。
②在main目录外创建一个目录专门存放inc、src目录,我以test目录为例子
ESP-IDF创建工程_第9张图片
在test目录下创建一个CMakeLists.txt文件

idf_component_register(SRCS "./src/mygpio.c"
                            "./src/mytimer.c"
                    INCLUDE_DIRS "."
                                 "./inc")

注意改变自己的文件路径。
同时还需要更改在最外一层的CMakeLists.txt文件中添加一句话

# For more information about build system see
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
# The following five lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)
set(EXTRA_COMPONENT_DIRS ./test)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(digital_tub1)

set(EXTRA_COMPONENT_DIRS ./test):设置额外的组件导向,将CMake指向到test目录下寻找我们定义的.c、.h文件。(注意这个语句一定要加,不然CMake找不到路径)

创建一个文件夹引用另一个文件夹的头文件
ESP-IDF创建工程_第10张图片
在app文件夹中引用bsp文件夹的头文件,在app文件夹下创建一个新的cmakelist文件夹,在cmakelist文件夹中加入头文件路径

idf_component_register(SRCS "./src/digital_display.c"
                    INCLUDE_DIRS "."
                                 "./inc"
                                 "/Bsp./inc")

/是根目录
./是当前目录
…/是父目录
/Bsp./inc:表示在Bsp根目录下的inc当前目录下找头文件
注:仍需set(EXTRA_COMPONENT_DIRS ./test):设置额外的组件导向,将CMake指向到test目录下寻找我们定义的.c、.h文件。

以上纯属个人见解,有误之处还请大家指正。

你可能感兴趣的:(ESP-IDF创建工程)