一、环境搭建

1.下载并安装ESP_IDF开发框架 

安装包下载网址

dl.espressif.cn/dl/esp-idf/https://dl.espressif.cn/dl/esp-idf/

安装注意事项

1.Windows 专属 ESP-IDF 一键安装程序: ​ 它会自动检测并安装缺失依赖,还自带独立工具链(不用提前安装Git和Python)

2.路径规划:规避中文 / 空格 / 特殊字符

2.添加环境变量

3.安装CH340串口驱动

4.查看ESP_IDF框架安装目录

5.安装viscode

1.网上下载最新版本viscode软件安装即可

2.安装插件

BSP-IDF 操作指令

cd (文件夹名) # 进入下一层 (文件名(输入文件夹前两个字符,按TAB补全))
cd ..          # 返回上一层
cd ../../      # 返回两层
ls             #列出当前目录下的文件 / 文件夹名称
    
idf.py build   # 编译
idf.py fullclean  # 清空旧构建缓存,比如编译错误后要清除后再重新编译
idf.py -p com4 flash  # 程序烧入(com端口要看实际)
    
idf.py set-target esp32  # 重新指定目标芯片 

idf.py  查看所有命令

二、新建项目工程

1.新建项目

2.修改bootloder

1.进入SDK配置

2.修改CPU频率

3.修改FLASH模式和大小及传输速率

4.修改PSRAM模式及传输速率

5.修改FreeRTOS系统时钟频率

6.修改分区表

三、ESP32芯片和ESP32模组

1. ESP32 芯片

这是整个系统的核心,由乐鑫设计的一个硅晶片。需要精密的天线设计和射频匹(设计不当性能会极差),还有外围电路的设计,组成芯片最小系统,才能正常使用。

芯片命名规则

芯片系列+内置FLASH+内置PSRAM:ESP32-S3 + FH4 + R2

ESP32-S3FH4R2

2. ESP32 模组

模组就是将最小系统所需元件集成在一块小型PCB上,并引出GPIO焊接的引脚(如邮票孔或焊盘),同时引出的 IO 可以满足各种应用需求。通过使用模组,开发者可以更容易地实现特定功能,缩短开发周期,提高开发效率(用户无需担心复杂的射频和外围电路设计)。

模组命名规则

ESP32-S3-WROOM-1-N16R8 模组

3.查型号

ESP Product Selectorhttps://products.espressif.com/#/product-selector?names=ESP32-S3-WROOM-1-N16R8&type=Module

1.CPU工作最大频率

240  (最大240Mhz)

2.FLASH大小及传输模式

16, Quad (Flash 容量是 16MB,四线 SPI Flash

Flash SPI mode可以选择QIO模式

3.PSRAM大小及传输模式

8, Octal(PSRAM 容量是 8MB, 八线 SPI PSRAM)

  • Quad SPI:四线 SPI PSRAM          Octal SPI:八线 SPI PSRAM

四、分区

1.认识分区

Flash划分为多个存储区域,记录每个区域的特定功能和用途

2.新建分区

五、添加组件

1.添加自定义组件

一个“组件”在物理上就是一个包含了有效的 CMakeLists.txt 文件的文件夹
这个 CMakeLists.txt 文件必须通过调用 idf_component_register() 函数来向构建系统声明自己。

“组件”的判定标准:

  • 必要条件:该文件夹下必须有一个 CMakeLists.txt 文件。

  • 关键动作:该 CMakeLists.txt 文件内必须调用 idf_component_register()

  • 组件名:组件名称默认就是该文件夹的名字

组件结构


components/                # 任意重命名
└── BSP/                   # 这将是一个名为 `BSP` 的组件
    ├── CMakeLists.txt     # 此文件定义了 `BSP` 组件
    └── LED/               # 这只是 `BSP` 组件内部的一个普通子目录
        └── led.c          # 这是 `BSP` 组件的源文件之一
CMakeLists.txt

# 第一步:用 set 定义变量(CMake通用指令,用于复用配置、简化维护)
# 变量名自定义,核心是“先存配置,再引用”

# 定义源码目录变量:指定组件的源码目录,框架会扫描目录下所有.c/.cpp文件编译
set(src_dirs       
    LED/led.c    # 源码目录:组件目录下的LED/子目录(扫描该目录下所有led.c文件)
)

# 定义头文件目录变量:指定组件的头文件目录,编译器扫描该目录找.h文件
set(include_dirs   
    LED          # 头文件目录:组件目录下的LED/子目录(扫描该目录下所有.h文件)
)

# 定义依赖组件变量:声明组件依赖的ESP-IDF内置组件
set(requires       
    driver       # 依赖内置driver组件(LED功能需调用GPIO外设驱动接口)
)


# 第二步:引用变量,注册组件(ESP-IDF专属指令,框架唯一识别的组件注册方式)
idf_component_register(
    SRCS ${src_dirs}              # 引用源码目录变量(等价于直接写"LED/led.c")
    INCLUDE_DIRS ${include_dirs}  # 引用头文件目录变量(等价于直接写"LED下所有.h文件")
    REQUIRES ${requires}          # 引用依赖组件变量(等价于直接写"driver")
)

2.添加乐鑫官方组件

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐