嵌入式物联网实战开发笔记-乐鑫ESP32开发环境ESP-IDF搭建【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载:

链接:百度网盘 请输入提取码
提取码:4e33

==========================================

3.1 ESP-IDF 简介 
ESP-IDF(Espressif IoT Development Framework)是乐鑫(Espressif Systems)为 ESP 系列芯片开发的物联网开发框架。它支持 ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列 SoC,基于 C/C++语言提供了一个自给自足的 SDK,方便用户在这些平台上开发通用应用程序。ESP-IDF 具有免费开源、专业稳定、功能丰富和易于使用等特点。它支持 Eclipse 和 VSCode 等 IDE,集成了大量的软件组件,包括 RTOS、外设驱动程序、网络栈、多种协议实现技术以及常见应用程序的使用助手。此外,ESP-IDF 还提供了详尽的软件组件使用和设计文档,包含 100 多个示例,有助于开发人员充分理解 ESP-IDF 功能,并从中挑选最适合构建其应用程序的模块。 
下面我们来看一下 Windows 系统下 ESP-IDF 的安装流程。 
3.2 安装 ESP-IDF 物联网开发框架 
3.2.1 下载 ESP-IDF 物联网开发框架 
打开乐鑫官方 Windows 安装下载中心下载 ESP32-IDF 安装包,找到 5.1.2 离线安装包。ESP32 的开源物联网开发框架安装包如下图所示: 

 
图 3.2.1.1 ESP32-IDF 安装包(部分截图) 
上图中 ESP32-IDF v5.1.2 - Offine Installer,5.1.2 是当前最新版本,如果没有 ESP32-IDF v5.1.2 - Offine Installer,说明官方有更新最新版本。我们建议使用离线 ESP32-IDF 安装包,因为使用在线 ESP32-IDF 安装包搭建环境需要网络的支持,所以我们不能保证网络下载过程中丢失某些文件,从而导致搭建环境失败。 
下载成功后,在安装程序上单击右键选择<以管理员身份运行>运行 esp-idf-tools-setup-
 

图 3.2.1.2 以管理员身份运行 IDF 安装文件打开安装程序后选择简体中文安装,如下图所示: 
 

图 3.2.1.3 选择简体中文 
往下走就是许可协议,勾选“我同意此协议”,单击下一步,如下图所示: 
 

图 3.2.1.4 勾选“我同意此协议” 
如果是第一次安装,会出现如下图提示。 
 

安装程序会检查你当前系统有没有打开"长路径支持",因为 GNU 编译器产生的编译文件会有非常深的目录结构,如果不支持长路径,编译可能出现文件不存在,目录不存在等奇怪的错误。这里单击应用修复按钮,可以修复这个问题。 
在弹出的确认对话框中,选择是,开始修复。 
 

图 3.2.1.6 在注册表中启用长路径如果修复不成功,一般情况是安装软件打开时没有使用管理员权限打开,可以手动修改注册表来支持长路径:打开注册表 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPat hsEnabled 设置为 1。如下图所示: 
 

修复完成之后,点击下一步。 
接下来一步,开始选择安装目录,安装程序默认的安装位置为 C:\Espressif,但这里我是安装在 D 盘,如果全部源码编译后可能产生几十 G 的大小占用,我们在 D 盘下创建 ESP32\Espre ssif 文件夹来保存 ESP32-IDF 库安装过程中生成的文件,如下图所示: 
 

图 3.2.1.8 设置安装路径 
这个安装路径非常重要,因为 VS Code 软件的 IDF 插件需要此路径来获取相关文件,所以开发者务必牢记该路径。 
下一步,确认安装组件,这里全部打勾,默认完全安装时 ESP32C2 是不打勾的(如下图所示),看需要自己选择。然后单击下一步。 
 

图 3.2.1.9 选择安装组件我们选择全部安装。点击下一步再次确认安装目录信息,然后单击安装。安装完成,三个全部勾选,1、2 用于测试环境安装是否成功,3 是将 IDF 工具链加入杀毒工具排除项,以加快编译速度,如下图所示: 
 

3.2.2 验证 ESP-IDF 库 
ESP-IDF 安装完成之后,系统自动打开两个窗口,它们分别为 PowerShell 命令行和传统的 cmd 命令行窗口,分别如下图所示: 
 


从上图中可以看到,当出现红色方框内的内容时,可以初步证明安装是没有问题的,同时这两个窗口都提示“idf.py build”字符串,它是 ESP32-IDF 库提供的编译代码命令。到此,我们如何验证 ESP32-IDF 库安装是否成功呢?这里我们使用 ESP32-IDF 库提供的实例来验证安装是否成功。首先我们打开 D:\ESP32\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started 路径,在此路径下包含三个 ESP32-S3 例程,如下图所示: 
 

这里我们使用第二个例程(hello_world)来验证 ESP32-IDF 库是否安装成功,首先拷贝这里例程的路径,然后在 PowerShell 或 cmd 命令行窗口输入命令“cd D:\ESP32\Espressif\framew orks\esp-idf-v5.1.2\examples\get-started\hello_world”,最后按回车进入此例程,如下图①所示: 
 

此时在此窗口输入命令“idf.py build”(上图②)编译此工程,编译结果如下所示: 
 

 窗口提示命令“idf.py -p (port) flash”,证明 ESP32-IDF 库安装完成。开发者也可以使用其他命令来验证,如命令(idf.py Menuconfig 进入菜单配置、idf.py set-target xxx 选择芯片或者是 idf.py monitor 开启监控等)。 
3.2.3 添加 ESP32-IDF 的环境变量 
按照此过程(此电脑→属性→高级系统→环境变量)打开,如下图所示: 
 

图 3.2.3.1 添加环境变量 
如果 ESP32-IDF 库安装成功,则系统自动为我们添加上图中的 IDF_TOOLS_PATH 和
IDF_PATH 环境变量,否则手动添加这两个环境变量。 
3.3 搭建开发环境 
3.3.1 下载与安装 VSCode 
鉴于我们使用的是 VSCode IDE 搭配官方 IDF 的方式进行开发,我们接下来便介绍一下
VSCode 的安装过程。 
首先,进入 VSCode 官方下载页面,根据系统需求选择下载安装包下图是 VSCode
 

图 3.3.1.1 VSCode 官网下载界面 
     这里,我们选择 Windows 版本进行下载。因为,我们是在 Windows 环境下进行的开发,故在此介绍 Windows 版本的下载步骤。不出意外,其它版本的下载方式应该也是一样的。这里我们不多废话,直接点击下载。 
     下载完后,我们按照如下所示步骤进行即可: 
 


 在该步骤中,路径如需更改的,请您点击“浏览”进行更改,但请注意:修改的路径最好不要出现中文,以避免在往后的开发过程中遇到问题而导致重装软件,这对您来说就得不偿失了。 
 

     如需修改,同样点击“浏览”进行设置,无需修改的话直接点击“下一步”即可。 
 

     这一步骤同样是有需求的都勾上,我们建议是都勾上。 
 

 
 
详细的个性化设置我们便不多介绍了,在这里我们介绍如何设置中文界面。 
我们在上图 3.4.8 中找到最左边一栏的“扩展”在搜索框中输入“Chinese”即可出现红色框内的扩展应用,然后我们点击安装并重启软件即可。 
至此,VSCode 的安装与配置便算是大功告成了。感谢您能耐心看到此处。 


3.3.2 安装 Espressif IDF 插件 
打开VS Code软件,然后按下快捷键“Ctrl+Shift+X”进入应用商城,在搜索栏下搜索Espressif 
IDF 插件,点击安装即可: 
 

至此 Espressif IDF 插件就算安装好了,接下来我们来看看插件的配置。 
3.3.3 配置 Espressif IDF 
快捷键 ctrl+shift+p 呼出命令栏,在弹如下提示框后,搜索“配置 ESP 插件”,或者在使用快捷键 ctrl+shift+p 呼出命令栏后,在搜索框输入配置命令:Configure ESP-IDF。 
 

 
 
到这一步需要注意的两点: 
     ①:这一项有两个选项,我们选择“Espressif”,不选择“Github”。因为,国内用户安装 “Github”会非常的慢,有时甚至会下载失败,所以我们选择“Espressif”选项即可。经过之前的配置选择该选项也会快很多。 
     ②:这一项也很关键,这是我们编译工具目录,路径选择不对安装也会失败。 
     然后我们点击右下角“install”进行安装: 
 

这里我们选择下载“ESP-IDF Tools”: 
 

 


安装完成后会出现如下提示: 
 


 
问题来了?我们知道 ESP32-S3 可以使用串口下载,那么它的串口波特率是多少呢?这里我们可在上图扩展设置中设置串口波特率,如下图所示: 
 

图 3.6.12 串口波特率设置 
安装 Espressif IDF 插件之后,按下快捷键“Ctrl+,”进入设置界面,在此界面下将设置以 json 文件打开,如下所示: 
 

将设置以 JSON 方式打开,上面的部分是我们自己创建的一些设置,下面是 Espressif IDF 插件根据 ESP 环境变量自动生成的一些配置,一般不需要更改,如下代码所示: 

    /* 上面的部分是我自己创建的一些设置 */ 
"editor.insertSpaces": false,                /* 自动插入空格禁用*/ 
    "editor.detectIndentation": false,           /* 启用时根据文件内容进行重写*/ 
    "editor.renderControlCharacters": true,     /* 是否显示控制字符:启用*/ 
    "editor.renderWhitespace": "all",            /* 显示4个空格是.... */ 
    "editor.tabSize": 4,                         /* tab设置为4个空格*/ 
    "editor.fontSize": 18,                       /* 代码字体大小*/ 
    "editor.fontFamily": "Monaco, 'Courier New', monospace", /* 代码字体*/     "update.mode": "manual",                     /* 设置不自动更新*/ 

3.4 调试相关工具介绍 
经过前面的配置,我们已经完成了 VSCode 软件下开发 ESP32-S3 的环境搭建。下面我们重点来讲解 VS Code 软件提供用户调试相关的工具有哪些,如下所示: 
 

图 3.4.1 调试相关工具 
1,选择串口(插头):即连接开发板的下载串口号,VS 会列出当前连接电脑的所有串口让你选择,这个会记录,再新打开 VSCode 不用重新选择,开发过程中尽量不要更换 USB 线的电脑插口,否则串口号会变。 
2,选择目标芯片:对应 idf 命令 idf.py set-target xxxx。即你当前这个工程是要下载到什么芯片上面,如 ESP32 S2,S3,C2,C3 等等,工程要与芯片相匹配,这个选择是写入当前工程配置的,一般不用更改,工程下配置文件基本已经选择好的。 
3,选择当前工程目录(文件夹):也不用修改,一般打开工程时会默认操作都在这个工程目录下 
4,工程配置菜单(齿轮):对应 idf 命令 idf.py menuconifg,用来配置当前工程的一些设置,配置项非常多,建议使用到再修改。一般代码工程都是配置好的,且不用修改 
5,清除工程(垃圾桶):清除工程编译文件,一般用于压缩拷贝工程文件时用到,清除后工程目录占用空间会占用非常小,KB 级,编译后为百 MB 级,还有一些编译过程中奇奇怪怪的问题也可以先清除编译后再编译 
6,编译工程(圆柱体):编译当前工程,只是编译,没有下载功能 
7,选择下载模式(五角星):一般都是选择串口 UART 方式下载 
8,下载(闪电):下载编译好的固件到设备芯片上,这里只是下载,没有编译功能,修改代码后要先编译再点这个下载,所做的修改才有效。 
9,串口监控(小电视):打开与设备连接的串口,打印设备串口信息 
10,编译/下载/监控(一团火):最常用的一个,它将编译下载和打开串口监控做在了一起,点一次全部搞定 
11,打开命令行:打开命令行窗口,且会定位在当前项目路径下,可以执行 idf 的一些命令 
12,执行自定义任务:不使用 
13,工程的错误与警告提示 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站系统架构演化实例_2.使用缓存改善网站性能

1.使用缓存改善网站性能 网站访问的特点和现实世界的财富分配一样遵循二八定律&#xff1a;80%的业务访问集中在20%的数据上。既然大部分业务访问集中在一小部分数据上&#xff0c;那么如果把这一小部分数据缓存在内存中&#xff0c;就可以减少数据库的访问压力&#xf…

【Python】自定义修改pip下载模块默认的安装路径

因为电脑下载了Anaconda提供的默认Python 3.9 以及后期下载的python3.10所以在Pychram进行项目开发时&#xff0c;发现一些库怎么导入都导入不了&#xff0c;手动install也是失败&#xff0c;后期在cmd里面发现python以及pip配置有点儿混乱&#xff0c;导致执行命令时&#xff…

碳循环、人类、遥感之间的关联

1. 碳与碳循环 碳是自然界中很常见的一种元素&#xff0c;它以多种形式广泛存在于大气和地壳之中。碳单质很早就被人认识和利用&#xff0c;碳的一系列化合物——有机物是生命的根本。 1.1 自然界中的碳 地球上最大的两个碳库是岩石圈和化石燃料&#xff0c;含碳量约占…

在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试

CV1811C环境编译 SDK目录结构 . ├── build // 编译目录,存放编译脚本以及各board差异化配置 ├── buildroot-2021.05 // buildroot开源工具 ├── freertos // freertos系统 ├── fsbl // fsbl启动固件,prebuilt形式存在…

Android14 - WindowManagerService之客户端Activity布局

Android14 - WindowManagerService之客户端Activity布局 一、主要角色 WMS作为一个服务端&#xff0c;有多种客户端与其交互的场景。我们以常见的Activity为例&#xff1a; Activity&#xff1a;在ActivityThread构建一个Activity后&#xff0c;会调用其attach方法&#xff0c;…

[docker] volume 补充 环境变量 参数

[docker] volume 补充 & 环境变量 & 参数 这里补充一下 volume 剩下的内容&#xff0c;以及添加参数(ARG) 和 环境变量 ENV 的内容 read only volumes ❯ docker run-p 3000:80--rm--name feedback-app-v feedback:/app/feedback-v "$(pwd):/app"-v /app/…

【C++初阶】vector使用特性 vector模拟实现

1.vector的介绍及其使用 1.1 vector的介绍 vector文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#…

第24天:安全开发-PHP应用文件管理模块显示上传黑白名单类型过滤访问控制

第二十四天 一、PHP文件管理-显示&上传功能实现 如果被抓包抓到数据包&#xff0c;并修改Content-Type内容 则也可以绕过筛查 正常进行上传和下载 二、文件上传-$_FILES&过滤机制实现 无过滤机制 黑名单过滤机制 使用 explode 函数通过点号分割文件名&#xff0c;…

VTC视频时序控制器原理以及Verilog实现

文章目录 一、前言二、视频时序控制原理三、Verilog实现3.1 代码3.2 仿真以及分析 一、前言 VTC&#xff08;Video Timing Controller&#xff09;是一种用于产生视频时序的控制器&#xff0c;在FPGA图像领域经常用到。Xilinx Vivado 也有专门用于生成视频时序的 IP&#xff0c…

webpack-babel2

浏览器的兼容性问题 浏览器的兼容性问题不知包括随屏幕大小而变化&#xff0c;还包括针对浏览器支持的特性&#xff08;如css特性&#xff0c;js特性&#xff09; 做处理。 目前市场上有很多浏览器&#xff1a;Chrome,Safari,IE,Edge等&#xff0c;要根据它们的市场占有率来决…

vue 对axios二次封装,配置api层,基于mock测试数据

一、初始化环境&#xff08;默认都会安装vue3项目ts&#xff09; 安装mock&#xff1a;全局安装 # 使用 npm 安装 npm install mockjs vite-plugin-mock # 使用 yarn 安装 yarn add mockjs vite-plugin-mock 二、进行配置 在vite.config.ts中进行配置 import { UserConfigEx…

NodeRed节点编辑用于边缘计算和规则引擎,能做带UI界面和业务逻辑的上位机或前端应用吗?

先说结论&#xff0c;可以&#xff0c;但是需要有页面嵌套继承类似的技术&#xff0c;实现页面模块化封装&#xff0c;否则难以实现复杂应用。 相信目光敏锐的人都在关注节点编辑在自身行业的应用&#xff01; NodeRed在边缘计算做数据协议解析、以及物联网平台中作为规则链引…

推荐几本C#/.NET进阶书籍

前言 今天大姚给大家推荐7本C#/.NET进阶书籍&#xff0c;希望能帮助到有需要的小伙伴&#xff0c;当然假如你有更好的C#/.NET进阶书籍推荐欢迎文末留言。 C#/.NET/.NET Core推荐学习书籍&#xff08;已分类&#xff09;&#xff1a;C#/.NET/.NET Core推荐学习书籍&#xff08;…

春秋云境:CVE-2022-25578[漏洞利用]

通过题目标题查询漏洞信息 所以我们渗透的重点就要放在.htaccess文件上 这是一种分布式配置文件&#xff0c;所以我们先寻找web管理登录页面 打开主页就能看到右下角的“管理”&#xff0c;或者我们使用dirsearch进行扫描也可以 在登录页面尝试弱口令登录 输入该CMS相关的一…

【游戏专区】贪吃蛇

1&#xff0c;游戏背景 贪吃蛇&#xff08;Snake&#xff09;是一款经典的电子游戏&#xff0c;最初在1976年由 Gremlin 公司开发。它的游戏背景相对简单&#xff0c;但具有高度的成瘾性。 1. **游戏场景**&#xff1a;通常在一个有界的矩形区域内进行&#xff0c;可以是一个…

关于Android绘制这一遍就够了

Android绘制基础 Android平台提供了一套完整的UI框架&#xff0c;其中包括了绘制组件和绘制API。在Android中&#xff0c;绘制主要涉及到两个核心概念&#xff1a;Canvas和Paint。 Canvas Canvas是Android中的一个类&#xff0c;它代表了绘图的画布。你可以在这个画布上进行…

Android Studio实现页面跳转

建立文件 temp.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"…

layui--table里使用switch

1. 项目需求 在layui.table上面渲染后的列表上面加一个switch开关&#xff0c;监听switch开关的动作&#xff0c;实现本列数据的状态切换&#xff01; 实现效果如下&#xff1a; 2. 实现方式 下面介绍的思路都是利用table的templet模板实现的&#xff0c;不同的在于模板代码…

Linux-内存文件

1. 基础IO操作 1.1 c语言的IO接口 fopen&#xff1a;打开一个文件&#xff0c;按照指定方式 参数&#xff1a;filename 文件名&#xff0c;也可以是路径&#xff0c;mode&#xff1a;打开方式 返回打开的文件指针 fread&#xff1a;从指定流中读数据 参数&#xff1a;从FIL…