【嵌入式】ESP32开发(一)ESP-IDF概述

devtools/2024/11/14 7:22:18/

文章目录

  • 1 前言
  • 2 IDF环境配置
  • 3 在VS Code中使用IDF
    • 3.1 使用ESP-IDF例程
    • 3.2 底部按钮的作用【重要!】
    • 3.3 高级用法
  • 4 ESP-IDF框架分析
  • 5 从零开始创建一个项目
    • 5.1 组件(component)
  • 6 主要参考资料
  • 7 遇到的一些问题与解决办法
  • 8 对于ESP-IDF开发的一些感受

1 前言

  对于ESP32的开发,方式有很多,比如先写入MicroPython固件,然后再使用python语言开发;或者是使用Arduino IDE开发;或者是使用PlatformIO开发;当然最直接的还是使用官方推荐的IDF套件来开发,这个套件包含了常用的各种组件,功能比较全面,但是弊端也很明显,那就是它基于CMake框架进行编译构建系统,对于新手来说不太友好,但耐心学习一下官方的资料以及CMake的一些基础知识,就可以渐入佳境。

2 IDF环境配置

  关于IDF如何配置,这里给出两种方法:一种是最省事的,直接在VS Code中安装即可,非常简便;一种是先使用官方的安装程序安装,再在VS Code中安装插件并查找。

  先介绍第一种方法。在VS Code插件市场中搜索idf,然后安装esp-idf插件:
在这里插入图片描述
安装好之后应该会直接弹出配置该插件的页面,如果没有,也可以唤起命令面板(Ctrl Shift P),点击配置ESP-IDF插件。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里在选择版本时要考虑一下原先代码兼容性的问题,不要随便尝试最新版。

然后静待安装完成。

对于新手来说,还是这种方式最为直观简便。


  另一种安装方式,虽然比较麻烦,但或许可以帮助开发者理解整个IDF框架的整体结构和运行原理。需要先在官网下载安装程序,然后再安装配置VS Code插件。

安装程序下载链接

安装完成之后,再打开VS Code,同样安装idf插件,然后打开配置页面,不过在首页不能选择EXPRESS,而要选择ADVANCE,这样就能查找到系统上安装的idf版本(不过好像会重新安装git和python,体积比较小,到是问题不大)。

  这种方式安装完之后,会创建IDF_PATHIDF_TOOLS_PATH两个环境变量,同时在桌面上会创建一个CMD和Windows Powershell的快捷方式,其实本质就是在运行源程序,只是会在打开时加载一些初始化命令,实现环境的配置。
  以powershell为例:
在这里插入图片描述

所谓的目标即是在打开时会执行的命令,这个完全可以在一般的powershell命令行中输入并执行,可以得到和直接运行该快捷方式一样的效果;而起始位置则是指打开终端之后所在的路径,可以根据自己需要进行设置。

  再来看看powershell和cmd快捷方式属性中的命令:

## powershell
C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoExit -File "D:\ESP-IDF_v4.4.5/Initialize-Idf.ps1" -IdfId esp-idf-eb4d36c04f0e6c1692111f031facd45b## cmd
C:\WINDOWS\system32\cmd.exe /k ""D:\ESP-IDF_v4.4.5\idf_cmd_init.bat" esp-idf-eb4d36c04f0e6c1692111f031facd45b"

可以发现,这些初始化命令主要是包含两部分,一个是运行安装路径下的一个初始化脚本,还有一个就是传入了一个ID号,这个ID号是作为这个初始化脚本的参数,应该是不可缺少的,否则环境不完整,无法找到idf.py文件。

  使用这种方式配置好的系统,可以在VS Code终端中输入对应的命令来配置相关环境,如下图从而使用命令行来编译构建项目工程。当然,这种方式肯定没有VS Code可视化操作来得方便,后面主要介绍的就是使用VS Code来编译构建工程,命令行使用是以防万一。

3 在VS Code中使用IDF

  这一步主要是学会如何使用VS Code这个强大的软件以及IDF插件的使用,这对于后续的编程开发非常重要。

3.1 使用ESP-IDF例程

  学会使用官方提供的例程可以说是使用IDF套件的第一步,而且很多例程也是今后开发的一个重要参考。

  快捷键Ctrl Shift P唤起命令面板,然后选择展示示例项目

在这里插入图片描述

以例程blink为例,点开之后可以看到右侧有关于这个例子的说明

在这里插入图片描述

点击右上角蓝色大按钮,就会自动将该工程复制到选择的路径下,并进入到该工程当中,然后可以简单看一下工程的结构(后面还会有更详细的解释):

在这里插入图片描述

重点主要是三个文件/文件夹:CMakeLists.txtsdkconfig(没有编译前,就是default后缀的文件),main文件夹,其他的都是项目附带或一些备份。此外,目录下的README文件中的内容其实就是刚刚的例程介绍。

  再看看main文件夹里面是啥:

在这里插入图片描述

其中,最主要的就是.c源码和CMakeLists.txt了,注意这里和外面的CMakeLists.txt是不一样的,里面的是组件编译文件,外面的是项目编译文件(后面也会有更详细的介绍)。

3.2 底部按钮的作用【重要!】

  再来看一下底部的按钮,也是在开发过程中主要使用的东西:

在这里插入图片描述
从左至右依次是:

  • 串口选择:需要在下载前选定,新的例程默认是COM1;

  • 目标选择(target):需要在编译前选定,默认esp32.

  • 项目选择(文件夹样式图标):一般就是当前目录对应的项目,一般不


http://www.ppmy.cn/devtools/133859.html

相关文章

xtu oj 聚会

文章目录 回顾代码思路 回顾 AB III问题 H: 三角数问题 G: 3个数等式 数组下标查询,降低时间复杂度1405 问题 E: 世界杯xtu 数码串xtu oj 神经网络xtu oj 1167 逆序数(大数据)xtu oj 原根xtu oj 不定方程的正整数解xtu oj 最多的可变换字符串…

移动硬盘需要格式化才能打开?详解原因与数据恢复方案

描述移动硬盘需要格式化才能打开 当我们尝试访问移动硬盘时,有时会遇到系统提示“需要格式化才能打开”的情况。这种提示通常意味着硬盘上的文件系统已损坏或无法被系统正常识别。一旦遇到这种情况,很多用户会感到焦虑,因为硬盘中可能存储了…

Logback 日志介绍及与Spring Boot 的整合 【保姆级教程】

Logback介绍 Logback是SpringBoot框架的默认的日志,内容如下图所示: Log4J 的创始人 Ceki Glc 和另一位 Log4J 贡献者 Sbastien Pennec 设计了 ​​logback。他们设计的 Logback 具有快速和通用的特性,可以在不同的环境下工作。 Logback 由…

11.9.2024刷华为

文章目录 HJ31 单词倒排HJ32 密码提取语法知识记录 傻逼OD题目又不全又要收费,看毛线,莫名奇妙 HW这叼机构别搁这儿害人得不得? 我觉得我刷完原来的题目 过一遍华为机考的ED卷出处,就行了 HJ31 单词倒排 游戏本做过了好像 HJ3…

MySQL常用订单表复杂查询15例

MySQL常用订单表复杂查询15例 在电子商务平台中,我们通常需要处理大量的数据查询任务。本文将介绍十五个复杂的 MySQL 查询任务及其示例代码。需要mysql8.0.X以上环境进行测试,因为使用到了窗口函数。 假设我们有一个电子商务平台,包含以下…

当微软windows的记事本被AI加持

1985年,微软发布了Windows 1.0,推出了一款革命性的产品:记事本(Notepad)。这款软件旨在鼓励使用一种未来主义的新设备——鼠标,并让人们可以不依赖VI等键盘工具就能书写文本和编写代码。记事本因其简洁和高…

Github 2024-11-09Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-11-09统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10CUE项目1Python项目1Polars: Rust中的DataFrame接口和OLAP查询引擎 创建周期:1354 天开发语言:Rust, Python协议类型:MIT License…

数字字符串格式化

小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完…