Windows下搭建ESP-IDF开发环境,适合ESP32/S2/C3/S3系列模组二次开发

前言

本教程适用于以下两种用户:

①无Linux环境搭建经验或搭建Linux开发环境不成功;

②使用安信可windows一体化环境IDE V1.5开发环境搭建不成功;

本教程提供了windows下搭建 ESP-IDF 开发环境的方法。

适用系统:Windows 10 64 位版本、Windows 7 SP2 级以上 x64 版本

安装版本:ESP-IDF 4.0 及以上版本

构建系统:CMake

1

方法一

方法一(懒人福音):

93e2e4d9c4493934c26ece77e954ba38.png

我们直接下载ESP-IDF 工具安装器,选择离线安装包。

69b8be9304d1a1304eaed3c4837aca00.png

下载完成后双击安装。

f9ff7ad4a9cb6b3b4a5255ded05cdbc4.png

安装路径默认,编译工具我们就选择一个就可以了。一路默认直到安装完成。

edc1e530c0166a4572f812a252074917.png

安装完成后打开桌面ESP-IDF CMD,显示如下表示编译环境已经加载成功~!

e5ce42b3602c2a0ee6dd5698d2e82f74.png

这里我们编译一个hello_world试试:

先进入hello_world所在目录,在ESP-IDF CMD内运行命令行

cd examples\get-started\hello_world

选择芯片型号:

安信可ESP32系列模组:idf.py set-target esp32

安信可ESP32-S2系列模组:idf.py set-target esp32s2

安信可ESP32-C3系列模组:idf.py set-target esp32c3

安信可ESP32-S3系列模组:idf.py set-target esp32s3

这里我们以安信可ESP32-C3系列模组为例,在ESP-IDF CMD内运行命令行

idf.py set-target ESP32C3

eca27c49807d08ec732c893f25567068.png

编译

idf.py build

编译成功显示如下

1821505f26049b4b9440305a71e1281e.png

用串口下载固件并运行

idf.py flash monitor  //如果电脑上接了多个串口设备,则运行 idf.py -p (PORT) flash monitor,(PORT)为大写的端口号,一定要选对,假设我的模组在电脑上的端口号为COM5,则命令行为idf.py -p COM5 flash monitor

(向左滑动查看全部)

下载完成,跑起来了。

0ea0677ca3e641d09661f4f0a569fb2c.png

上面安装的是编译的环境,至于用什么软件来编辑代码,Eclipse、Visual Studio Code等,用得顺手就行!

9d6687f5d2c5948ff2db162664c689f6.png

2

方法二

方法二:

2.1 安装依赖工具

2.1.1 安装 Python 3.7

下载链接:python3.7.9;

如果安装了其他版本python,建议先卸载,或做共存处理。查询当前默认使用python版本,可用python-V查询,如果不是python3版本请先切换到python3。

注意,在安装时先勾选 Add Python 3.7 to PATH,或手动添加环境变量。

f5726aa1f21052f71daad89de3b2df31.png

修改 Python pip 源:

为了加快后续 Python 包的下载速度,可将 pip 源切换到国内,例如切换为国内阿里的源。

管理员模式打开命令提示符窗口( CMD) ,执行以下指令:

pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set global.trusted-host mirrors.aliyun.com

7ca1ddfa4ae96121a8523b0d8d8264a1.png

2.1.2 安装 Git

Git 用于拉取 ESP-IDF 源代码,代码版本控制等。下载链接:git 2.30

安装默认一路点击下一步即可。

注意,以上步骤完成以后,请重启电脑使配置生效

2.1.3 安装Windows-curses

打开cmd,输入

pip install windows-curses

安装成功如图:

b2f21ee750fcb7f99050d2bc36d19e72.png

2.2 下载SDK

1.创建一个目录存放SDK,在目录空白处右击,选择Git Bash Hare;

2.下载重定向脚本 esp-gitee-tools,运行以下指令

git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git

d79b0c26987c1c2f146b621d141c08af.png

3. 下载SDK:

git clone https://gitee.com/EspressifSystems/esp-idf.git -b release/v4.3

4.使用 esp-gitee-tools 拉取子模块

cd esp-gitee-tools
export EGT_PATH=$(pwd)
cd ..
cd esp-idf
$EGT_PATH/submodule-update.sh

后续如果切换了 git 分支,子仓库列表可能会有变化,需要重复执行步骤4的指令。

2.3 安装编译工具链

为了生成最终能在 ESP 芯片上运行的 bin 文件,这里还需要安装芯片对应的编译工具链和构建系统,工具链相关的下载信息一般在 ESP-IDF 中附带,我们这里使用 esp-gitee-tools 进行下载,步骤如下:

1.进入我们第三步创建的目录;

2.同第三步类似,打开一个终端窗口;

3.使用 esp-gitee-tools 安装编译工具链,执行以下指令:

cd esp-gitee-tools
export EGT_PATH=$(pwd)
cd ..
cd esp-idf
$EGT_PATH/install.sh

7662fa2ce07265f346d3a207d115cb48.png

至此环境安装的过程已经完成。

2.4 小试牛刀,使用cmd编译运行Hello World

2.4.1 进入刚才我们下载的SDK目录,在地址行输入cmd,然后回车打开cmd.exe。

1556a3336d40c0aefbc918d53418ce21.png

在esp-idf目录下运行export.bat添加环境变量到当前终端。

74bfb25fdf721863de19c0794fbffc44.png

注意,每次打开cmd都要运行此脚本添加环境变量到当前终端才能编译esp-idf。

2.4.2 配置menuconfig

cd examples\get-started\hello_world

idf.py menuconfig

进入menuconfig界面

95a850c37d81e09e1fe9115210fce2a4.png

在这里我们配置好我们需要的宏,波特率,flash模式、flash大小速率等信息。

10cce08162301bf4326ae2bcb61a7997.png

2.4.3 选择芯片

在需要编译的目录下运行idf.py set-target <芯片型号>

如安信可ESP32-S模组、ESP32-A1S模组等芯片型号应选择ESP32;

ESP-12K模组、ESP-12H芯片型号选择ESP32S2。

ESP-C3-12F模组型号选择ESP32C3。

这里我们以ESP-C3-12F模组为例

idf.py set-target esp32c3

2.4.4 编译调试

清除编译(可选步骤)

idf.py clean

编译

idf.py build

b11ea97806211a75c1779ce3a74eafa4.png

擦除固件 (可选步骤)

idf.py -p COM9 erase_flash

下载固件

idf.py -p COM9 flash    //COMx为你模组的串口号,需确保对应上。如果你的电脑上只接了一个COM,则只运行idf.py flash亦可

(向左滑动查看全部内容)

54eb04180bc8c614193bcf2806538ddd.png

打开串口日志

idf.py monitor

ed6e3bf95103728343ae0370975f92d3.png

ok,程序已经跑起来了~

2.5 配置VS Code一体化开发环境

用户可以使用任意编辑器编写源代码,我们这里使用 VS Code,下载链接:点击下载 VS Code。编译、下载、运行过程如下:

2.5.1 启动 VS Code,打开内置终端窗口,快捷键为 “Ctrl + ~”

10c96aea797e66c548763c433c23d4d3.png

2.5.2 将默认终端切换为命令提示符 CMD

b98bcf6e2b51f48a607206936ae703fb.png

2.5.3 重启 VS Code 

这样VS Code的终端就换成了CMD了,我们打开SDK,打开新终端。

a0ff67f420f3c0877ae62bf22c1405a1.png

在esp-idf目录下运行export.bat脚本。

01c83aeb3b028130f2fb3b5d15e6b6c4.png

注意,每次打开终端都要运行此脚本添加环境变量到当前终端才能编译esp-idf

剩下的步骤就跟前文一模一样啦,我们只是把cmd集成到VS Code,用法都是一样的。

SDK目录结构简介

esp-idf里面有很多例程,所有例程放在example文件夹里面。

28c0c92154b43a77f6c9547071646596.png

每个例程都有一个README文件,README里面有对该例程的功能和使用方法的详细介绍,上手必看!

开发资料

安信可模组资料:https://docs.ai-thinker.com/wifi

安信可官方csdn: https://aithinker.blog.csdn.net

ESP-IDF编程指南:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32

总结

除了以上方法,我们还可以用VS Code插件Espressif IDF搭建esp-idf开发环境,搭建方法:传送门

windows环境跟linux环境相比,编译速度还是慢了不少的,这也是为什么我们在很多博文教程中都建议搭建linux开发环境的原因。

来源:安信可科技

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

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

相关文章

python中 1.34e3_Python快速编程入门——第2章 Python基础语法

第2章 python基础语法一、基本语法二、变量和数据类型三、标识符和关键字四、简单数值类型一、基本语法注释&#xff1a;Python的注释是用# 不像C/C使用的是//或者/*/。多行注释好像挺麻烦。行与缩进&#xff1a;Python中的特色是缩进而C/C语言一般都是使用的括号来表示范围。如…

Lync Server 2010的部署系列_第六章 安装配置拓扑生成器、前端Server、前端池

一、安装 Lync Server 2010 管理工具&#xff08;包括拓扑生成器&#xff09; 1) 登录Front.Gianthard.com&#xff08;192.168.1.21&#xff09;。在“Microsoft Lync Server 2010 - 部署向导”页上&#xff0c;单击“安装拓扑生成器”。 2) 进行SQL方面的客户端。 3) 安装成功…

CF1042F Leaf Sets (贪心+树上构造)

题目大意&#xff1a;给你一棵树&#xff0c;让你对叶节点分组&#xff0c;保证每组中&#xff0c;任意两个叶节点之间的距离不大于K&#xff0c;求最小的组数 手动yy的贪心竟然对的 对于每个节点&#xff0c;维护一个$ma[i]$&#xff0c;表示在$i$节点的子树内 未被分组的叶节…

被 HR 直接怼:估计你一辈子就是个程序员

今天看到一个非常扯蛋的事情。事情来自网络&#xff0c;不是作者本人。我一直认为程序员是可以做一辈子的事情&#xff0c;程序员是一种做得越久技术越熟练的工作。但是有的人并不这样认为。---有程序员因为能力很强&#xff0c;公司非常满意&#xff0c;结果派了一位 HR 与其谈…

一起谈.NET技术,在MVC2.0使用Lodop为WEB打印提出完美解决方案

通过好友CallHot介绍Lodopweb打印控件。由于是国人开发的&#xff0c;故这两天认真了研究下&#xff0c;打算在未来的项目中使用。现将学习成果与园友分享。如果存在不足的地方&#xff0c;希望您指出。 具体的实现步骤如下&#xff1a; 一、准备工作 1.MVC2.0 jQuery1.4.1 开…

树莓派4b搭建个人云_树莓派4B NAS系统搭建

一、硬盘挂载由于之前硬盘(NTFS格式)里有数据不想格式化想直接挂载&#xff0c;就没有格式化成ext4文件格式的。安装ntfs-3gsudo apt-get install ntfs-3g加载内核模块modprobe fuse查看硬盘情况fdis -l将硬盘挂载到/mnt下ntfs-3g /dev/sda1 /mnt实现开机自动挂载vim /etc/fsta…

(转)python调取C/C++的dll生成方法

本文针对Windows平台下&#xff0c;python调取C/C的dll文件。 1.如果使用C语言&#xff0c;代码如下&#xff0c;文件名为test.c。 __declspec(dllexport) int sum(int a,int b) {return (a b); } 如果使用C语言&#xff0c;代码如下&#xff0c;文件名为test_cpp.cpp。在Wind…

生产者-消费者模式

生产者/消费者问题的多种Java实现方式 实质上&#xff0c;很多后台服务程序并发控制的基本原理都可以归纳为生产者/消费者模式&#xff0c;而这是恰恰是在本科操作系统课堂上老师反复讲解&#xff0c;而我们却视而不见不以为然的。在博文《一种面向作业流(工作流)的轻量级可复用…

周末,说下我喜欢的篮球

我应该有很久没有看NBA比赛了&#xff0c;没有其他原因&#xff0c;确实是因为工作太忙了&#xff0c;即使是在带薪上厕所&#xff0c;也没有足够的时间看下NBA比赛。如果说忙是一个比较好的托词&#xff0c;那还有一个原因&#xff0c;我现在更多的喜欢野球圈的新闻。刚毕业那…

数据结构+算法 学习计划与资源

学了很多杂乱的技术&#xff0c;继续成长 渐感吃力&#xff0c;重新学习数据结构 与 算法. 计划&#xff1a; 1.严蔚敏《数据结构》《大话数据结构》&#xff0c;每天一个小例子。 2.采用C 或者C 。尽量用C实现&#xff0c;以辅助理解面向对象编程思想。 3.与同学每天练习、讨论…

没有串口,如何打印单片机调试信息?

输出调试信息是嵌入式开发中必不可少的调试利器&#xff0c;嵌入式开发的一个特点是很多时候没有操作系统&#xff0c;或者没有文件系统&#xff0c;常规的打印log到文件的方法基本不适用。最常用的是通过串口输出uart log&#xff0c;例如51单片机&#xff0c;只要实现串口驱动…

[luogu4571 JSOI2009] 瓶子和燃料 (数论)

传送门 Solution 题目说的很迷&#xff0c;但可以发现两个瓶子互相倒最少是容积的gcd 那么题目就转化为求其中选k个瓶子gcd的最大值&#xff0c;这个可以分解因数&#xff0c;枚举因数得到 Code //By Menteur_Hxy #include <map> #include <cmath> #include <cs…

线程池 调度 java_java调度器和线程池总结

一、推荐使用的调度器和线程池1、调度器//2个线程的调度器private static ScheduledThreadPoolExecutor pool new ScheduledThreadPoolExecutor(2);//5秒钟后每3分钟执行一次pool.scheduleAtFixedRate(new TestTask(), 5, 60 * 3, TimeUnit.SECONDS);;2、线程池//10个线程的线…

JVM GC调优总结 -Xms -Xmx -Xmn -Xss

堆大小设置 JVM 中最大堆大小有三方面限制&#xff1a;相关操作系统的数据模型&#xff08;32-bt还是64-bit&#xff09;限制&#xff1b;系统的可用虚拟内存限制&#xff1b;系统的可用物理内存限制。32位系统下&#xff0c;一般限制在1.5G~2G&#xff1b;64为操作系统对内存无…

MFC应用程序实例

新建FirstMFC对话框应用程序 此程序是开发一个口令对话框程序&#xff0c;包含了模式对话框与非模式方式调用对话框。 详细见源文件&#xff0c;地址&#xff1a; 共享链接&#xff1a;http://u.163.com/b47tr9n提取码&#xff1a;zxx0o2v2 小时钟程序 主要包含了定时器的启动与…

Linux驱动小技巧 | 利用DRIVER_ATTR实现调用内核函数

1. 前言 很多朋友在调试驱动的时候&#xff0c;都会遇到这样一个场景&#xff1a;修改一个参数&#xff0c;然后调用某个内核中的函数。比如将某个gpio的值拉高/拉低&#xff0c;修改某个寄存器的值等等。如果每一个参数都通过字符设备的ioctl接口&#xff0c;增加对应的cmd&am…

myeclipse运行java项目_myeclipse运行自己从前的或其他人的javaweb项目

1.配置javaweb 连接部署好本地的tomcat服务器方法如下&#xff1a;1.运行Myecipse-->Window-->preference2.MyEclipse-->Servers-->Runtime Environments-->add-->Apache Tomcat v8.03.next->Browser(Tomcat的安装目录)-->finishMyeclipse 设置jdk版本…

MYSQL性能调优及架构设计学习笔记-影响MYSQL性能的相关因素之实例分析

为什么80%的码农都做不了架构师&#xff1f;>>> 需求概述 一个简单的讨论区系统&#xff0c;需要有用户&#xff0c;用户组&#xff0c;组讨论区这三部分基本功能 简要分析 1&#xff09; 须要存放用户数据的表&#xff1b; 2&#xff09; 须要存放分组信息和用户与…

洛谷P2089 烤鸡 题解

题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡&#xff08;本是同畜牲&#xff0c;相煎何太急&#xff01;&#xff09;Hanke吃鸡很特别&#xff0c;为什么特别呢&#xff1f;因为他有10种配料&#xff08;芥末、孜然等&#xff09;&#xff0c;每种配料可…

java excel 导入 加校验_POI实现excel各种验证和导入的思路总结

制定标准导入总是与导出相辅相成的&#xff0c;无规矩不成方圆。所谓的标准都是大家一同来维护和遵守的&#xff0c;那么首先就是制定一个模板。这样可以减少验证的工作量。例如时间的规范【yyyy-MM-dd】&#xff0c;获取单元格的时间值用下面的方法java.util.Date date cell.g…