赞
踩
扩展(Ctrl+Shift+X)
,输入 esp
,找到 Espressif IDF
进行安装查看 - 命令面板(Ctrl+Shift+P)
。输入 configure esp-idf extension
,点击。ADVANCED
安装python -m pip install --upgrade pip
Ctrl+Shift+P
)show examples projects
,点击。Use current ESP-ID
,使用本地 SDK。blink
,点击 Create project using example blink
。不要有中文路径和空格
blink
为模板,自动创建一个新工程。blink
工程文件夹名称为 自定义名字(如ledBlink)
blink.c
文件重命名为 ledBlink.c
main/CMakeLists.txt
文件来包含 ledBlink.c
CMakeLists.txt
文件,工程名称改为 ledBlink
Makefile
可不修改,为旧版GNU Make编译,Cmake由CMakeLists.txt
控制idf.py flash
编译前先 idf.py fullclean
清空一下example_test.py
、sdkconfig.defaults
等不必要的文件示例项目目录树可能如下所示:
- 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/
项目 CMakeLists.txt
sdkconfig 项目配置文件
idf.py menuconfig
可选的 components 项目组件
EXTRA_COMPONENT_DIRS
可以在顶层 CMakeLists.txt 中设置以查找其他地方的组件。每个组件目录都包含一个组件
CMakeLists.txt
文件。该文件包含变量定义,用于控制组件的构建过程及其与整个项目的集成。有关更多详细信息,请参阅组件 CMakeLists 文件。每个组件还可能包含一个
Kconfig
定义组件配置选项的文件,可以通过menuconfig
. 某些组件还可能包含Kconfig.projbuild
和project_include.cmake
文件,它们是用于覆盖项目部分的特殊文件。
main
COMPONENT_DIRS
包含此组件,但您可以修改此变量。build
idf.py
如果该目录尚不存在,则创建该目录。CMake 配置项目并在此目录中生成临时构建文件。然后,在主构建过程运行后,该目录还将包含临时目标文件和库以及最终的二进制输出文件。此目录通常不会添加到源代码管理或随项目源代码一起分发。每个项目都有一个项目 CMakeLists.txt
文件,其中包含整个项目的构建设置。默认情况下,项目 CMakeLists
可以非常小。
cmake_minimum_required(VERSION 3.5)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(myProject)
cmake_minimum_required(VERSION 3.5)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(myProject)
myProject.elf
,myProject.bin
。每个 CMakeLists 文件只能定义一个项目。每个项目都包含一个或多个组件。组件可以是 ESP-IDF 的一部分、项目自己的组件目录的一部分,或者从自定义组件目录中添加。
组件是 COMPONENT_DIRS
列表中包含 CMakeLists.txt
文件的任何目录。
最小组件 CMakeLists.txt
文件只是使用idf_component_register
以下命令将组件注册到构建系统:
idf_component_register(SRCS "foo.c" "bar.c"
INCLUDE_DIRS "include"
REQUIRES mbedtls)
SRCS
( *.c, *.cpp, *.cc, *.S)
。这些源文件将被编译到组件库中。INCLUDE_DIRS
REQUIRES
每个组件还可以有一个Kconfig
文件,与CMakeLists.txt
. 这包含要添加到此组件的配置菜单的配置设置。
当 menuconfig 运行时,这些设置可以在“组件设置”菜单下找到。
要创建组件 Kconfig 文件,最容易从随 ESP-IDF 分发的 Kconfig 文件之一开始。
有关示例,请参阅添加条件配置。
添加 .c.h
组件最简单的方法,是直接将 .c.h
添加到 main 文件夹,之后修改main\CMakeLists.txt
。但此方法并没有将 .c.h
单独划分为模块,删减功能时会很麻烦,不利于大型工程的管理。
第二种,将相似和相关联的方法/函数封装为 .c.h
模块组件,并以文件夹的方式加以区分管理。这样有利于系统对功能部件的删减,利于工程管理。
于是将原先 blink.c
中的 led 控制代码抽离剥出,单独编写外设驱动文件 components/led/src/led.c
、components/led/include/led.h
,并将 led-IO 初始化、亮、灭这些外设的操作,封装为函数,包含在驱动文件中。
创建 components/led/src
、components/led/include
这两个文件夹。复制 CMakeLists.txt
、component.mk
到 components/led 下。工程目录结构如下:
创建文件 components/led/src/led.c
、components/led/include/led.h
。
led.c
#include "led.h" void led_init(void) { /* Configure the IOMUX register for pad BLINK_GPIO (some pads are muxed to GPIO on reset already, but some default to other functions and need to be switched to GPIO. Consult the Technical Reference for a list of pads and their default functions.) */ gpio_pad_select_gpio(LED_GPIO); /* Set the GPIO as a push/pull output */ gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT); } void led_on(void) { gpio_set_level(LED_GPIO, 1); } void led_off(void) { gpio_set_level(LED_GPIO, 0); }
led.h
#ifndef _LED_H_ #define _LED_H_ #include "sdkconfig.h" #include "driver/gpio.h" /* Can use project configuration menu (idf.py menuconfig) to choose the GPIO to blink, or you can edit the following line and set a number here. */ #define LED_GPIO CONFIG_LED_GPIO void led_init(void); void led_on(void); void led_off(void); #endif
修改 components/led/CMakeLists.txt
set(led_srcs "src/led.c")
idf_component_register(SRCS "${led_srcs}"
INCLUDE_DIRS "include")
实现在 menuconfig
中对 LED的GPIO
进行配置
menu "Example Configuration"
config BLINK_GPIO
int "Blink GPIO number"
range 0 34
default 5
help
GPIO number (IOxx) to blink on and off.
Some GPIOs are used for other purposes (flash connections, etc.) and cannot be used to blink.
GPIOs 35-39 are input-only so cannot be used as outputs.
endmenu
添加头文件、初始化函数,然后调用函数。
• 由 Leung 写于 2021 年 6 月 3 日
• 参考:乐鑫ESP32开发 1.Vscode创建新工程,编译,下载烧录,监视端口,点亮一个LED
ESP32开发 2.添加.c.h并修改CMakeLists,来定制自己的工程
ESP32开发(4):构建自己的工程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。