这里通过建立一个基本的helloworld项目说明ESP-IDF项目的基本项目结构。

1、HelloWorld项目

1.1、新建HelloWorld项目
  • 打开VSCode
  • 打开命令面板,并输入esp-idf new,执行新建esp-idf项目命令: image-20210914235135871
  • 设置项目名等: image-20210914235338949
  • 点击choose Template,从一个模板新建项目,这里选择 ESP-IDF -> sample_project模板: image-20210914235507309
  • 点击create project …,就新建了一个项目helloworld: image-20210914235738224
1.2、app_main

ESP-IDF项目中,app_main为应用程序的入口,在这里添加代码:

1
2
3
4
void app_main(void)
{
printf("hello world\r\n");
}
1.3、编译并烧写

在esp-idf终端下,输入如下命令完成编译和烧写:

1
idf.py build flash -p COM6

上面 -p COM6 指定ESP32开发板在电脑上对应的串口号。

1.4、查看输出

打开ESP-IDF串口终端,即可看到输出信息: image-20210914214024314

  • 如果使用其他串口工具,需要选择波特率为 115200。

2、项目结构

一个ESP-IDF项目由不同组件构成,再加上项目配置、构建脚本形成一个项目文件夹。

2.1、文件夹结构

如上面的helloworld项目,其主要的文件夹结构如下: image-20210914220915795

2.2、代码文件
  • main文件夹为应用主程序代码所在目录;
  • helloworld.c为主应用程序,里面有 app_main() 的主程序入口;
2.3、构建脚本
  • CMakeLists.txt 项目构建脚本,其内容:
1
2
3
4
cmake_minimum_required(VERSION 3.5)

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

包含了CMake版本要求,已定义好的通用ESP-IDF项目构建脚本,项目名称等。

  • main文件夹下得CMakeLists.txt脚本,内容为:
1
2
idf_component_register(SRCS "helloworld.c"
INCLUDE_DIRS ".")

主要是描述代码结构,添加需要编译的源代码。

2.4、其他说明
  • 构建的时候,会在当前项目目录新建build文件夹,里面存放了编译产生的中间文件和最终的固件二进制文件;
  • 工程配置文件sdkconfig,该文件在 make menuconfig 命令中被创建或更新;
  • components组件,一般是将第三方组件放置在该文件夹下。