当前位置: 首页 > news >正文

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

文章目录

  • 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.

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

相关文章:

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

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

最新6.7分非肿瘤纯生信,使用机器学习筛选慢阻肺中的关键基因。机器学习在非肿瘤生信文章中正火,可重复!

关于非肿瘤生信,我们也解读过很多,主要有以下类型 1 单个疾病WGCNAPPI分析筛选hub基因。 2 单个疾病结合免疫浸润,铁死亡,自噬等基因集,机器学习算法等。 3 两种相关疾病联合分析,包括非肿瘤结合非肿瘤&…...

vue 提交表单抹除字段为空的数据

使用背景 在配合后端post请求接口的时候 仅需要将有值的字段传入接口中 关键代码 cleanDataObj(obj) {Object.keys(obj).forEach((key) > {if (obj[key] ) {delete obj[key]}})},demo如下 export default {data() {return {demoObject:{name:小花,sex:,hobb…...

web实验3:虚拟主机基于不同端口、目录、IP、域名访问不同页面

创建配置文件: 创建那几个目录及文件,并且写内容: 为网卡ens160添加一个 IPv4 地址192.168.234.199/24: 再重新激活一下网卡ens160: 重启服务: 关闭防火墙、改宽松模式: 查看nginx端口监听情况:…...

英伟达Isaac Manipulator产品体验

相关配置 Isaac Manipulator3.1.0Isaac Sim4.2.0Ubuntu20.04GPURTX 4090 LaptopCPUI9 13900HXMem64GB 过程记录与反馈 GPU加速效果 请描述您在使用Isaac Manipulator时,调用cuMotion加速库来进行机器人运动规划和轨迹优化等任务的步骤和过程,并记录任…...

网安加·百家讲坛 | 仝辉:金融机构鸿蒙应用安全合规建设方案

作者简介:仝辉,北京娜迦信息科技发展有限公司攻防安全负责人,深耕移动应用安全领域十余年,获得过CISP、CISSP、OSCP、PMP、CCRC-CIASW等相关证书,参与多项移动应用安全标准起草,参与华为、平安集团、中国移…...

PHP Session

PHP Session PHP Session 是一种在 PHP 中用于跟踪用户会话的技术。会话允许在用户浏览网站时存储和访问用户信息。本文将详细介绍 PHP Session 的工作原理、如何创建和销毁会话、会话的安全性和最佳实践。 什么是 PHP Session? 在 Web 开发中,HTTP 是一种无状态的协议,这…...

泷羽sec学习打卡-Linux基础2

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于Linux的那些事儿-Base2 一、Linux-Base2linux有哪些目录呢?不同目录下有哪些具体的文件呢…...

# 【STM32F1】——无线收发模块RF200与串口通信

【STM32F1】——无线收发模块RF200与串口通信 一、简介 本篇主要对调试无线收发模块RF200的过程进行总结,实现了以下功能。 串口普通收发:使用STM32F103C8T6的USART2串口接收中断,实现两个无线收发模块RF200间的通信。二、RF200介绍 电压:3.4-5.5V工作频率:418~455MHz发…...

计算机网络:运输层 —— TCP 协议概述与 TCP 报文段首部格式

文章目录 基本概念主要特点和功能TCP报文段的首部格式字段标志位扩展首部 传输控制协议(Transmission Control Protocol,TCP)协议是互联网上最常用的传输层协议之一,它负责提供可靠的端到端数据传输服务。TCP 协议采用连接导向的通…...

python正则表达式和递归

一、正则表达式 1.基础匹配 学习目标:了解什么是正则表达式,掌握re模块的基础使用 就是一种规则的定义,通过规则去验证给定的目标是否符合定义的规则。 正则的三个基础方法 match match是匹配开头,开头有python就算匹配成功&a…...

JAVA后端生成图片滑块验证码 springboot+js完整案例

前言 现在大部分网部都是图片滑块验证码,这个得要与后端联动起来才是确保接口安全性 通过我们系统在发送手机短息时都会选进行滑块验证,但是我们要保证发送短息接口的全安,具体路思如下 那么这个滑块的必须是与后端交互才能保证安全性&…...

Spring Boot中的自动装配机制

文章目录 1. 什么是自动装配?2. 自动装配是如何工作的?3. 如何开启自动装配?4. 自动装配的注意事项5. 结语推荐阅读文章 在Spring Boot的世界里,自动装配(Auto-configuration)就像春风拂面,轻轻…...

Brave127编译指南 Windows篇:配置Git(四)

1. 概述 在Brave浏览器的开发过程中,Git作为核心版本控制工具扮演着不可或缺的角色。作为当今最广泛使用的分布式版本控制系统,Git为开发者提供了强大的源码管理能力。通过Git,您可以轻松追踪代码变更、管理不同版本,并与其他开发…...

mysql数据库(五)多表查询

多表查询 文章目录 多表查询一、链表查询1.1交叉连接1.2 内连接1.3 左连接1.4 右连接1.5 全连接1.6 例子 二、子查询2.1 in与not in2.2 any/some2.3 all2.4 比较运算符2.5 exists 三、例子 查询中使用的表如下所示 ------------ | id | name | ------------ | 1 | IT | …...

【go从零单排】JSON序列化和反序列化

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,处理 JSON 数据主要依赖于 encoding/json 包。这个包提…...

海外携程机票token 1001分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…...

【算法】——二分查找合集

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:二分查找工具 1:最基础模版 2:mid落点问题 一:最…...

社会工程骗局席卷金融机构

2024 年北美金融机构收到的社交工程诈骗报告数量比一年前增加了 10 倍。数据显示,诈骗现在占所有数字银行欺诈的 23%。 深度伪造和 GenAI 诈骗的危险日益增加 BioCatch 在其 2024 年北美数字银行欺诈趋势报告中公布了这些发现,该报告还详细说明了报告的…...

前缀和算法习题篇(上)

1.一维前缀和 题目描述: 解法一:暴力解法:模拟 时间复杂度是O(n*q),会超时。 解法二:前缀和解法:快速求出数组中某一个连续区间的和 快速是指O(1),前缀和思想可把时间复杂度可降到O(q)。 算法思路: 先预处…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...