ESP-IDF

ESP-IDF

安装

esp-idf

esp-gitee-tools

使用esp-gitee-tools加速环境搭建,详情看install使用

cmd环境下在esp-idf文件夹下运行export.bat/export.sh加入环境变量,然后运行idf.py build编译

组件配置相关文件

文件 位置 作用 概括
Kconfig 组件目录【手动创建】 用于生成menuconfig中的菜单于Component Configuration子菜单 菜单模板
Kconfig.projbuild 组件目录【手动创建】 用于生成menuconfig中的菜单于顶层菜单 菜单模板
sdkconfig 项目根目录【自动生成】 用于以键值对的形式保存Kconfig设置手动改动无效 保存设置
sdkconfig.h 工程编译生成文件build/config/【自动生成】 C语言访问Kconfig配置的方式手动改动无效 C语言接口
sdkconfig.default 项目根目录【手动创建】 自定义sdkconfig的默认值,与sdkconfig文件格式相同,不会被构建系统更改。构建系统自动使用此文件的配置填充sdkconfig中未设置的值 缺省值清单
sdkconfig.old 项目根目录【自动生成】 当保存旧的menuconfig设置时,构建系统自动备份一个原来的sdkconfig文件 备份
sdkconfig.ci 该文件是 CI(持续集成)测试框架的一部分,在正常构建过程中会被忽略。 单元测试时
sdkconfig.remane 用于重命名弃用的配置名,方便旧配置文件快速用于新配置 向前兼容

新建工程

  • 方法一
    通过idf.py指令
    1
    idf.py create-project projName
  • 方法二
    在esp-idf的example->’get-started’里面是有一个sample_project的样板文件,可以复制修改

文件内容以及作用分析

ProjDir/CMakeLists.txt文件

这是工程目录下的给CMake使用的文件,我们可以在里面指定我们需要用的componnent路径。

1
2
3
4
5
6
7
8
9
10
11
# 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 $ENV{IDF_PATH}/examples/common_components/led_strip)
#这一行就是指定项目用到的componnent路径

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(ws2812_master)

ProjDir/Makefile文件

这个文件就是给CMake的编译文件,这里面的信息还是比较有用的。同样,我们也需要在这里面声明用到的componnent路径,给CMake指路。要注意需改PROJECT_NAME :=为你的项目名称。

1
2
3
4
5
6
7
8
9
10
#
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
# project subdirectory.
#

PROJECT_NAME := ws2812_master

EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/led_strip

include $(IDF_PATH)/make/project.mk

ProjDir/main/CMakeLists.txt文件

这个文件用来个CMake指路,告诉它main文件的位置,注意修改main文件的名称。

1
2
idf_component_register(SRCS "ws2812_master_main.c"
INCLUDE_DIRS ".")

ProjDir/main/Kconfig.projbuild文件

这不是一个必须的文件,它的作用就是把一些常量放进idf.config menuconfig里面,可以方便针对情况修改工程,而不需要进入到代码里面。
它的格式请参考下面的格式,或者示例工程里面也有这个文件。
在代码中使用需要注意:WS2812_RMT_GPIO 这个配置项在使用的时候应该为CONFIG_WS2812_RMT_GPIO

1
2
3
4
5
6
7
8
9
10
11
12
13
menu "WS2812 RMT Configuration"
config WS2812_RMT_GPIO
int "RMT TX GPIO"
default 48
help
Set the GPIO numbers used for transmitting the RMT single.

config WS2812_STRIP_LED_NUMBER
int "Number of LEDs in strip"
default 25
help
A single RGB strip contains serveral LEDs.
endmenu
-->

请我喝杯咖啡吧~

支付宝
微信