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,一经查实,立即删除!

相关文章

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) 安装成功…

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

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

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

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

(转)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;或者没有文件系统&#xff0c;常规的打印log到文件的方法基本不适用。最常用的是通过串口输出uart log&#xff0c;例如51单片机&#xff0c;只要实现串口驱动…

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; 须要存放分组信息和用户与…

软件测试第三次作业

一、开头 (1)合作者&#xff1a;201631062521&#xff0c;201631062421 (2)代码地址&#xff1a;https://gitee.com/h2503652646/WordCount.git (3)本次作业链接地址&#xff1a;https://edu.cnblogs.com/campus/xnsy/Test/homework/2203 二、正文 (1)互审代码情况 已经实现Wor…

Linux驱动开发中与设备树相关的6种debug方法

整理出了6种驱动开发时与设备注册、设备树相关的调试方法&#xff0c;彼此间没有优先级之分&#xff0c;每种方法不一定是最优解&#xff0c;但可以作为一种debug查找问题的手段&#xff0c;快速定位问题原因。例如在芯片验证时&#xff0c;不同时钟频率下系统启动情况摸底时&a…

DiscoveryService.getRemoteAdvertisements是否会获得本地通告?

从该方法名称上来说&#xff0c;应该是不能获得本地通告&#xff0c;本着探究的精神&#xff0c;首先做个小测试&#xff0c;再从源代码中寻找答案。----------------------------------------------------------------------------- 测试结果&#xff1a;本地通告确实取不到&a…

Linux的bc命令计算π的值预估系统算力

这是今天突然想到的一个事情&#xff0c;几年前我和一个朋友做一个开发板&#xff0c;然后我们需要完成的这个开发板有算力的要求&#xff0c;当时我们测试的时候就用了一个shell脚本来分析系统的算力。今天我突然想不起这个命令&#xff0c;然后就想写篇文章记录下&#xff0c…

面向对象的思想是什么?

我同事的回答&#xff0c;我觉得这句话可以读十遍说下我自己的理解你不是人&#xff0c;你是猪。解释一下我们在编写面向对象的代码时&#xff0c;一定要有抽象的思想&#xff0c;什么是抽象&#xff0c;抽象是一种概念的东西&#xff0c;不是实实在在的&#xff0c;看不见摸不…

python编程格式化输出_Python的三种格式化输出

今天刚学了python的三种格式化输出&#xff0c;以前没接触过这么有趣的输出方式&#xff0c;现在来分享一下。#!/user/bin/env python#coding:utf-8#三种格式化输出#第一种格式化输出nameinput("name:")ageinput("age:")jobinput("job:")salaryi…

多线程的异常捕捉

为什么要单独讲多线程的异常捕捉呢&#xff1f;先看个例子&#xff1a; public class ThreadException implements Runnable{Overridepublic void run() {throw new RuntimeException();}//现象&#xff1a;控制台打印出异常信息&#xff0c;并运行一段时间后才停止public stat…

Linux 安装配置JDK 、 MySQL 、nginx

今天我来讲一下在Linux下各环境的搭建&#xff0c;主要就讲一下jdk、MySQL、和一个代理服务器nginx 1、 jdk的安装配置 1)卸载自带openjdk 当我们拿到一个全新的ECS的时候上面有的会自带一个openjdk&#xff0c;但是我们一般不会用这个&#xff0c;所以在这里我们会先卸载这个自…

wat java_并发工具优于wati、notify(69)

现在几乎没有理由在使用wait 和 notify&#xff0c;使用高级工具代替java.util.concurrent 包并发工具分三类&#xff1a;Executor 框架并发集合(concurrent Collection)同步器(synchronizer)并发集合对标准集合接口(List、Map、Queue)封装了高性能的并发实现为了提高并发性&am…

一道关于 fork 的笔试题

题目阅读下面的代码&#xff0c;显示终端会打印出几个 hello world&#xff1f;#include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h>int main() {fork();fork();fork();printf("hello world\n");exit(0); }…