【嵌入式】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.

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Multisim水箱水位控制系统仿真电路(含仿真和报告)

【全套资料.zip】水箱水位控制系统仿真电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.在水箱内的不同高度安装3根金属棒,以感知水位变化情况, 液位分1&…

解读Nature:Larger and more instructable language models become less reliable

目录 Larger and more instructable language models become less reliable 核心描述 核心原理 创新点 举例说明 大模型训练,微调建议 Larger and more instructable language models become less reliable 这篇论文的核心在于对大型语言模型(LLMs)的可靠性进行了深入…

zabbix监控端界面时间与服务器时间不对应

1. 修改系统时间 # tzselect Please select a continent, ocean, "coord", or "TZ".1) Africa2) Americas3) Antarctica4) Asia5) Atlantic Ocean6) Australia7) Europe8) Indian Ocean9) Pacific Ocean 10) coord - I want to use geographical coordina…

ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动

一、Spinnaker 安装 1.1Spinnaker 下载 下载地址为: https://www.teledynevisionsolutions.com/support/support-center/software-firmware-downloads/iis/spinnaker-sdk-download/spinnaker-sdk–download-files/?pnSpinnakerSDK&vnSpinnakerSDK 在上述地址中…

Windows配置JDK

1、解压 下载以后解压,放在一个没有中文路径和没有空格的目录,如下图: 2、配置Java环境 1)、点击左下角windows图标,输入huanjing(或者path),打开环境变量配置 如图: …

Unity教程(十八)战斗系统 攻击逻辑

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

HCIP-HarmonyOS Application Developer 习题(二十三)

1、(多选)端云一体化已经集成以下哪些服务SDK。 A、云函数 B、云数据库 C、云存储 D、云托管 答案:AB 分析:云开发即为应用开发云侧工程,目前包含云函数与云数据库工程。 2、(多选)Entry下的m…

图数据库 | 5、图数据库三大组件之一 之 图计算 (下)

书接上文:图数据库 | 4、图数据库三大组件之一 ——图计算 (上)-CSDN博客 结合计算效率来评估与设计图计算所需的数据结构。 存储低效性或许是相邻矩阵或关联矩阵等数据结构的最大缺点,尽管它有着O(1)的访问时间复杂度。例如通过…

Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别

目录 一、概念 1、纹理过滤 2、邻近过滤 3、线性过滤 二、邻近过滤和线性过滤的区别 三、源码下载 一、概念 1、纹理过滤 当纹理被应用到三维物体上时,随着物体表面的形状和相机视角的变化,会导致纹理在渲染过程中出现一些问题,如锯齿…

【java】java通过s3访问ceph报错

1.报错信息、背景 工作中起了几个访问ceph的服务pod节点,一段时间后1个节点一直报错Unable to execute HTTP request: Timeout waiting for connection from pool,详细i信息如下图片,有且仅有1个节点报错,其他节点访问正常。看日志…

对于目标文件太大无法拉入u盘事件的解决方法

问题: 解决方法: 1.按住win r 键打开运行,输入cmd,点击确定。 2.输入convert 盘符(你自己的u盘的盘符): /fs:ntfs并单击回车

React Hooks在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …

Linux(CentOS)yum update -y 事故

CentOS版本:CentOS 7 事情经过: 1、安装好CentOS 7,系统自带JDK8,版本为:1.8.0_181 2、安装好JDK17,版本为:17.0.13 3、为了安装MySQL执行了 yum update -y(这个时候不知道该命令的…

【操作系统】输入/输出(I/O)管理

王道笔记 一、I/O管理描述 1.1 I/O设备的概念和分类 1.1.1 什么是I/O设备 “I/O”就是“输入/输出”(Input/Output) I/O设备机会可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。下图就…

HarmonyOS App 购物助手工具的开发与设计

文章目录 摘要引言功能需求分析技术方案与设计架构设计技术选型 代码示例Demo数据抓取模块数据存储模块历史价格查询和数据可视化模块完整界面布局和调用示例代码详解 QA环节总结参考资料 摘要 随着促销活动的增多,用户面临真假折扣的困惑,特别是在一些…

激活函数解析:神经网络背后的“驱动力”

神经网络中的激活函数(Activation Function)是其运作的核心组件之一,它们决定了神经元如何根据输入信号进行“激活”,进而影响整个模型的表现。理解激活函数的工作原理对于设计和优化神经网络至关重要。本篇博客将深入浅出地介绍各…

昇思大模型平台打卡体验活动:项目1基于MindSpore实现BERT对话情绪识别

基于MindSpore实现BERT对话情绪识别 1. 模型简介 BERT(Bidirectional Encoder Representations from Transformers)是由Google于2018年末开发并发布的一种新型语言模型,基于Transformer架构中的Encoder,并且具有双向编码的特性。…

【vue】echarts地图添加蒙版图片,多图层地图实现天气信息展示

实现原理&#xff1a;多层图层叠加实现复杂的信息展示。 <template><div class"wrapper"><el-drawertitle"天气信息":modal"iszz":visible.sync"weatherinfo":direction"direction"><drawer:labelnam…

6.584-Lab1:MapReduce

前置知识/概念 Raft 是一个基于“Leader”的协议&#xff0c;能够保证分布式网路的一致性。 RPC&#xff08;Remote Producer Call&#xff09; 参考链接1 参考链接2 Golang中regexp正则表达式的用法 https://gukaifeng.cn/posts/golang-zheng-ze-biao-da-shi-regexp-de-j…

Docker在微服务架构中的最佳实践

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 引言 Docker 概述 定义与原理…