使用IDF和VSCode构建ESP32的开发环境

目录

概述

1 安装ESP32开发环境IDF

1.1 下载软件

1.2 安装软件

1.3 配置环境参数

1.4 VSCode中配置IDF插件

1.5 配置烧写代码方式

2 在使用vscode创建工程

2.1 创建工程模版

2.2 工程目录介绍

3 编译和下载

3.1 认识 VSCode下idf编译环境

3.2 编译代码

3.2.1 认识output

3.2.2 DRAM和IRAM

3.3 下载代码


概述

本文主要介绍构建使用IDF和VS-CODE 工具构建ESP32的开发环境的详细步骤,还应用IDF和VS CODE创建ESP32的项目文件,并实现编译和下载功能。

1 安装ESP32开发环境IDF

1.1 下载软件

软件下载地址:

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

官方文档地址

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/hw-reference/esp32/get-started-devkitc.html#get-started-esp32-devkitc-board-front

官方主页地址

https://www.espressif.com.cn/zh-hans/products/socs/esp32

选择安装版本的时候要注意:stable 说明该版本是稳定版本,它已经被测试,证明其可靠性没有问题,才会发发布出来,安装的时候要选择这类软件。

在Windows上安装IDF,选择如下版本:

1.2 安装软件

下载软件后,点右键选择 admistrater ,安装软件

点击是按钮,软件会自动修复这个问题:

提示修复成功,可进行下一步操作:

出现如下UI,说明IDF安装成功:

点击完成按钮,UI会自动跳出power shell,此时说明编译环境也安装完成了

1.3 配置环境参数

变量地址说明
D:\tools\Espressifidf软件的安装目录
D:\tools\Espressif\frameworks\esp-idf-v5.2.1对应v5.2.1的库文件

1.4 VSCode中配置IDF插件

打开VS Code软件, 然后按下快捷键“Ctrl+Shift+X”进入应用商城,在搜索栏下搜索EspressifIDF 插件 :

点击install后,看见IDF正在安装:

出现如下界面,说明安装已经完成:

1.5 配置烧写代码方式

选择UART

2 在使用vscode创建工程

2.1 创建工程模版

打开一个新的vccode窗口,在键盘上按下: Ctrl +shift + P, 选择如下选项,创建工程:

选择该选项后,还需要配置如下信息,配置完成后,点击choose Template

点击choose Template ,选择sample_project, 然后系统会自动生成一个空的工程

模版项目目录结构如下:

2.2 工程目录介绍

使用VSCode创建工程后,在工程所在的目录中会生成如下这些文件和目录:

目录/文件名描述
.devcontainer和Docker相关的配置文件(系统自动生成,不需要用户修改)
.vscode和vscode相关的配置文件(系统自动生成,不需要用户修改)
build编译项目文件(编译项目后会自动生成,不需要用户修改)
main主程序目录,系统自动生成的代码
prj项目开发目录,可以放入和项目相关的代码
user用户数据
CMakeLists.txtCMake配合文件,用于构建项目编译环境
README.md项目说明文档
sdkconfigSDK配置,在这里可选择enable/disable某一个模块

项目文件夹下的内容:

3 编译和下载

3.1 认识 VSCode下idf编译环境

在下图中,笔者对重要的item进行了编号,现在来一一认识这些item的功能。

使用一张表,详细的列出这些item的功能:

Item 编号功能介绍
1选择ESP32和PC之间通信的串行数据端口号
2根据使用的硬件,选择对应的芯片型号,型号不对,编程会失败
3清除编译产生的文件,二次编译时,不建议点击这个按钮,因为进行项目编译时,它会编译整个SDK,这个导致编译项目的时间会很长。已经编译过SDK后,点击编译按钮,它只会编译修改后的代码,这大大缩短编译的时间
4编译项目
5下载代码

3.2 编译代码

3.2.1 认识output

点击3.1章节中的图片,编号4对应的按钮,就能编译代码。编译成功后,在终端会打印如下信息:

这些信息表示什么含义呢?

参数项描述
Used static DRAM已经使用的DRAM空间
.data size静态全局数据内存区空间
.bss size未初始化数据区空间
Used static IRAM已经使用的IRAM空间
.text size代码区空间
.vectors size矢量表空间
Used Flash size已经使用的Flash空间
.text代码区大小
.rodata可读数据大小
Total image size生成的二进制文件大小

3.2.2 DRAM和IRAM

RAM类型功能说明
DRAM数据内存DRAM(数据 RAM)是连接到 CPU 数据总线上的内存,用于存储数据。这是作为堆访问最常见的一种内存。
IRAM指令内存IRAM(指令 RAM)是连接到 CPU 指令总线上的内存,通常仅用于存储可执行数据(即指令)。如果作为通用内存访问,则所有访问必须为 32 位可访问内存

3.3 下载代码

下载代码至ESP32前,必须保证项目文件已经全部编译完成,点击3.1章节中的图片,编号5对应的按钮,就能编程功能。

下载完成后,在OUTPUT窗口会打印Fash Done

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

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

相关文章

数据结构:静态链表(编程技巧)

链表的元素用数组存储, 用数组的下标模拟指针。 一、理解 如果有些程序设计语言没有指针类型,如何实现链表? 在使用指针类型实现链表时,我们很容易就可以直接在内存中新建一块地址用于创建下一个结点,在逻辑上&#x…

软件无线电系列——模拟无线电、数字无线电、软件无线电

本节目录 一、模拟无线电 二、数字无线电 1、窄带数字无线电 2、宽带数字无线电 三、软件无线电本节内容 一、模拟无线电 20世纪80年代的模拟体制(美国的AMPS/欧洲的TACS)被称为第一代移动通信,简称1G,主要目标是为在大范围内有限的用户提供移动电话服务。最主要的…

【数据结构】二叉搜索树底层刨析

文章目录 1. 二叉搜索树的实现2. 二叉搜索树的应用3. 改造二叉搜索树为 KV 结构4. 二叉搜索树的性能分析 1. 二叉搜索树的实现 namespace key {template<class K>struct BSTreeNode{typedef BSTreeNode<K> Node;Node* _left;Node* _right;K _key;BSTreeNode(const…

pycharm打开文件GBK编码格式

Preferences→File Encodings→Global Encoding(全局编码)或Project Encoding(项目编码)。IIDE Encoding是IDE编码。下面这个roject Encoding 是项目编码&#xff0c;修改项目编码为UTF-8

离线安装数据库 mysql 5.7 linux

离线安装数据库 mysql 5.7 linux 方法一 参考链接Linux(Debian10.2)安装MySQL5.7.24环境 赋予文件执行权限chmod x 文件名 使用root用户sudo su解压文件tar xvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz重命名mv mysql-5.7.42-linux-glibc2.12-x86_64 mysql将桌面的mys…

Redis 持久化-AOF

AOF&#xff08;Append Only File&#xff09;&#xff0c;以日志的形式来记录每个写操作&#xff08;增量保存&#xff09;&#xff0c;将Redis执行过的所有写指令记录下来(读操作不记录)&#xff0c; 只许追加文件但不可以改写文件&#xff0c;redis启动之初会读取该文件重新…

企业级项目带你入门Jmeter(不定时更新,请耐心等待,谢谢支持)

企业级项目带你入门Jmeter JDK安装及配置Jmeter安装Jmeter调整界面调整参数调整汉化界面比例BodyData消息体工具栏大小左侧树结构调整后效果展示 测试计划和线程组测试计划线程组 取样器HTTP请求默认配置录制模拟间隔时间统计报表Cookie管理器变量和后置处理器CSV数据文件处理断…

leetcode判断子序列

本题中&#xff0c;我们可以删除原始字符串的一些字符但是不能改变其他字符的位置&#xff0c;这种求子序列的题都可以用动态规划来解决。 首先我们要确定dp数组的定义&#xff0c;这里我们将dp数组定义为dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的…

【洛谷 P8637】[蓝桥杯 2016 省 B] 交换瓶子 题解(贪心算法)

[蓝桥杯 2016 省 B] 交换瓶子 题目描述 有 N N N 个瓶子&#xff0c;编号 1 ∼ N 1 \sim N 1∼N&#xff0c;放在架子上。 比如有 5 5 5 个瓶子&#xff1a; 2 , 1 , 3 , 5 , 4 2,1,3,5,4 2,1,3,5,4 要求每次拿起 2 2 2 个瓶子&#xff0c;交换它们的位置。 经过若干次…

WebAssembly探索篇(二)引入第三库的简单demo

文章目录 开发环境demo简单介绍实践出真知各个文件内容CMakeLists.txtmain.cpp cmake 编译结果 遇到问题错误1&#xff1a;both async and sync fetching of the wasm failedvscode安装Preview on Web Server插件 最近因为项目原因&#xff0c;研究了一下WebAssembly。2015年上…

C++Qt学习——qss文件的使用

当我们使用好多控件&#xff0c;比如QLabel和PushButtun的时候&#xff0c;会设置不一样的style&#xff0c;如果每次都在widget.cpp里面写的话&#xff0c;代码会很不好看&#xff0c;这也就是qss文件存在的意义。 目录 1、右键res.qrc,选择Add New 2、写上名称style.qss …

排序链表的三种写法

题目链接&#xff1a;https://leetcode.cn/problems/sort-list/?envTypestudy-plan-v2&envIdtop-100-liked 第一种&#xff0c;插入排序&#xff0c;会超时 class Solution {public ListNode sortList(ListNode head) {//插入排序&#xff0c;用较为简单的方式解决ListNo…