[基础篇]ESP32-RTOS-SDK教程(一)之Windows环境搭建

当下正是物联网最好的时代,学习新的技术怎么能只学习ESP8266呢?要知道ESP8266还有一个孪生兄弟呢,最重要的是这个孪生兄弟要比ESP8266是更厉害的,所以我们也是非常有必要学习一下的,其实这篇文章去年就已经写了,不过是在自己的个人主页上更新的,然而百度的SEO不晓得哪里出了毛病,一直检索不到我的主页,可能是没花钱竞价排名吧,尴尬脸.jpg~

重新学习ESP32(零)之环境搭建

其实按理说,我们应该也跟ESP8266一样,从第“零”认知篇开始,但是这篇文章已经写好了,索性就先更新这篇吧,最近看到了很多关于ESP32优秀的项目,看的我也手痒痒的,以后我们ESP8266和ESP32穿插进行,现在ESP8266更新的文章全是不带操作系统的,可能跟ESP32不太一样,大家在学习的时候也要注意思维的转变哟~

以下为搬运的内容:


前言

前几天看到乐鑫的公众号推送了一篇文章,说是ESP8266最新的SDK风格已经和ESP32相近,又想着自己已经好久没有接触过ESP8266了,想搭建个环境玩一下,结果一言难尽,鼓捣了半天愣是没弄成,突然遭受的挫折让人有些无奈,于是想还是先学习一下ESP32吧,之前也接触过,但是当时主要是玩ESP8266,其两者的代码风格以及开发方式大相径庭,于是也就没有细致的深入学习,现在看来ESP8266跟ESP32的开发方式大有‘合拢’之势,当然不是完全一样,只是乐鑫的攻城狮在努力的封装成一样的,貌似从头学习一下ESP32也是很有必要的。
ESP8266跟ESP32真是这两年物联网行业的一匹黑马,不得不说的是乐鑫是一家本土企业,其总部在上海,芯片出货量已经达到1亿颗,看到国内的企业能够有如此成就真的也很高兴。乐鑫官网感兴趣的同学可以去乐鑫官网看看~
其硬件开发环境搭建也很简单,网上也有很多教程,这里就简单说一下。

下载安装相关工具

下载安装相关工具

工具链

工具链在这里主要是用来编译我们编写的代码的,就是类似于编译器,这里乐鑫给我们已经打包好了工具链所需要的运行环境,我们只需要下载解压就好。下载地址点这里:工具链,大家可以根据自己的开发平台选择。我这里使用的是Windows操作系统,后面的步骤都是在此操作系统下讲解。

工具链安装

工具链安装很简单,解压到某个路径下就可以了,不过不支持带有空格的路径和中文路径。

 

我这里是在G盘新建了一个espressif文件夹,将工具链直接下载到了此文件夹,并解压到了当前文件夹,msys32就是解压出来的文件。

下载ESP-IDF(SDK)

这里我们使用git去下载,请确保已经安装了git,不要下载zip格式的SDK,那样会报错。

git clone -b v3.1 --recursive https://github.com/espressif/esp-idf.git

-b v3.1是下载v3.1版本,目前最新的release版本,ESP-IDF目前有好几个分支。

–recursive 此命令会自动初始化并更新仓库中的每一个子模块,不要遗漏此选项,否则后面编译会报错。

设置IDF_PATH

打开esp32_toolchain.sh,不要双击打开,也不要用记事本打开,可以看到已经有了IDF_PATH,这里我们追加一条PATH,其路径就是你刚刚下载的ESP-IDF的路径。设置完成后关闭mingw32,再重新打开,这里主要是让刚刚设置的PATH生效,如果你有Linux使用经验的话,也可以用source的方法。

下面我们看一下是否设置成功:

如果打出的路径跟你设置的一样,那就没问题了,到此为止环境就搭建成功了。

编译hello world工程

环境搭建完成后,当然是来到了激动人心的hello world环节了!我们先不做任何更改直接编译官方给出的例子。

cd $IDF_PATH/examples/get-started/hello_world/make menuconfig

执行完上面的命令,会出现一个界面我们选择Serial flasher config,然后将第一项的端口修改成我们的开发板的端口,e.g. COM7,这是Windows上的端口格式。

make all #编译速度可能有点慢,实测需要2分20秒左右,将配置 app 和 bootloader 并根据配置生成分区表
make flash #烧录用户程序,bootloader,分区表

make monitor #打开监视器,查看串口打印

可以看到成功打印出了hello world,并每十秒重启一次。下面我们修改一下代码,让它每隔一秒打印 www.makingfun.xyz

我们先将这个工程copy到别的文件夹,我们不在原工程上进行修改。

mkdir ~/projects && cd projects
cp -r $IDF_PATH/examples/get-started/hello_world ./

然后我们打开这个工程main文件夹下的hello_world_main.c文件,修改成跟上图一样。修改完成后我们需要重新编译一下,之前我们已经把整个SDK编译了一遍,所以这里我们只需要编译用户文件就好,不用重复去编译整个的文件。

make app #仅创建应用程序
make app-flash #仅烧录应用程序
make monitor

可以看到成功打印出了我们想要的日志,到这里,我们不仅完成了开发环境的搭建,也编译了例程,而且还通过修改代码了解了大体的开发流程。

这里给分享一下官方的编程指南和API参考指南。

ESP-IDF 编程指南 V3.1

ESP-IDF API

很多内容都是英文,尤其是API指南,全都是英文的,但大体都是很好理解的,现在各种翻译软件也很多,遇到实在不懂的,可以用用翻译软件查看一下。

最后附上我的Github仓库,后面关于ESP32的代码都会在这个仓库更新,欢迎大家star~

您的star是我最大的动力。

IAMLIUBO-GitHub

 QQ交流群:592587184

转载于:https://www.cnblogs.com/imliubo/p/10457542.html

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

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

相关文章

对话Linus Torvalds:大多黑客甚至连指针都未理解

摘要:Linus Torvalds坦言那些狡诈的通过文件名查找高速缓存,然后又抱怨自己能力一般的内核“恶魔”才是他欣赏的;相反,很多人连低水平的内核编程都还没学好。 几周前, Linus Torvalds在Slashdot上回答了一些问题。其中…

总结学习(提纲)

之前在私募做期权量化学习了那么久,趁着毕业找工作这段时间,对之前学习的东西,制作的函数等进行一个系统性的总结,顺便每天更新的时候,记录下自己的体重与波比跳次数。 1.MC的学习与策略编写 2.python基础学习资料的…

安卓系统上的远程 JS 调试 Remote JavaScript Debugging on Android

每当在 Android 移动设备上调试网页时,开发人员往往都会不自觉陷入调试的泥潭中去。《Android开发指南》提供了一个解决方案,却有点繁琐复杂。因此,许多 Web 开发人员会倾向于使用类似 Firefox Firebug 的或像 WebKit 的 Web Inspector 之类的…

js关于表单校验完善

<!DOCTYPE html><html> <head> <meta charset"UTF-8"> <title>注册页面</title> <style type"text/css"> .left{ width: 100px; …

Python高效编程技巧

摘要&#xff1a;作者有多年的Python编程经验&#xff0c;并且有很多的编程小技巧和知识&#xff0c;其中大多数是通过阅读很流行的开源软件&#xff0c;如Django, Flask, Requests中获得的。 我已经使用Python编程有多年了&#xff0c;即使今天我仍然惊奇于这种语言所能让代码…

quartz 任务调试 建表 sql 语句、create table语句

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDUL…

关于ttk的使用与安装

ttk是tkinter中的子模块&#xff0c;在python2.x中是作为独立模块。但是在python3.x中则是成为了tkinter的子模块&#xff0c;因此调用时&#xff0c;转变为 from Tkinter import ttk

SEO艺术

SEO艺术 编辑推荐 在本书中&#xff0c;四位搜索引擎优化&#xff08;SEO&#xff09;领域最受瞩目的专家阐述了制订以及执行一个完善的SEO策略时应遵循的一些实用指南与最新技术。 基本信息 原书名&#xff1a; The Art of SEO原出版社&#xff1a; OReilly作者&#xff1a; (…

ActiveMQ支持的传输协议

连接到ActiveMQ Connector:ActiveMQ提供的&#xff0c;用来实现连接通信的功能。包括:client-to-broker、broker-to-broker。ActiveMQ允许客户端使用多种协议来进行连接。 client-to-broker模式一般是配置文件中的transportConnector配置 broker-to-broker:一般是指网络(networ…

http状态码301和302详解及区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一直对http状态码301和302的理解比较模糊&#xff0c;在遇到实际的问题和翻阅各种资料了解后&#xff0c;算是有了一定的理解。这里记录下…

哪些编程语言需要修复?

摘要&#xff1a;编程语言有十全十美的吗&#xff1f;每种语言都有缺陷吗&#xff1f;这不&#xff0c;Java、C、C、Python都中枪了。语言之间也可相互“掐架”&#xff0c;一起来看下。 原文作者Kevin Kelleher采用一种比较新颖的方式来比较编程语言&#xff1a;即描述每个编程…

时间修改,学习

设定时间格式 import datetime print datetime.datetime.now().strftime("%Y-%m-%d %H:%M") # 2018-05-08 16:54 时间增加 import datetime print (datetime.datetime.now()datetime.timedelta(days1)).strftime("%Y-%m-%d %H:%M:%S") days改为hours m…

Python标准库

《Python标准库》基本信息原书名&#xff1a; The Python Standard Library by Example 原出版社&#xff1a; Pearson Education 作者&#xff1a; (美)Doug Hellmann 译者&#xff1a; 刘炽 出版社&#xff1a;机械工业出版社 ISBN&#xff1a;9787111378105上架时间&#xf…

五种世界顶级思维-20190303

一、墨菲定律&#xff1a; 你越害怕什么&#xff0c;就越会发生什么。 二、吉尔伯特定律&#xff1a;工作中最大的困难就是没人跟你说如何去做。 三、吉德林法则&#xff1a;把问题清楚的写下来&#xff0c;就已经成功一半了。 四、沃尔森法则&#xff1a;把信息和金钱排在第一…

状态码301和302的区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 定义如下&#xff1a; 301 Moved Permanently 被请求的资源已永久移动到新位置&#xff0c;并且将来任何对此资源的引用都应该使用本响应…

Perl迎来25岁生日

摘要&#xff1a;Perl迎来了它的第25岁生日&#xff0c;普天下Perlist都冒泡同庆一下&#xff0c;很多开发者喜欢它的理由是因其具备强力、稳定、成熟、可移植性等特点&#xff0c;Perl的爱好者们赶快送上你的祝福吧&#xff01; 昨天&#xff0c;Perl迎来了它的第25岁生日&…

20165114 《网络对抗技术》 Exp0 Kali安装与配置 Week1

目录&#xff1a; 一、kail的下载与安装 二、kali的网络设置 三、安装vmware-tools。 四、更新软件源。 五、共享文件夹 六、安装中文输入法 一、kail的下载与安装 VMware workstation的安装 因为之前的课程已经涉及&#xff0c;所以本机已经安装好了VMware workstation&#x…

大数据:互联网大规模数据挖掘与分布式处理

《大数据:互联网大规模数据挖掘与分布式处理》基本信息原书名&#xff1a;Mining of Massive Datasets作者&#xff1a; (美)拉贾拉曼(Rajaraman,A.) (美)厄尔曼(Ullman,J.D.) [作译者介绍]译者&#xff1a; 王斌丛书名&#xff1a; 图灵程序设计丛书出版社&#xff1a;人民邮电…

pip 切换源安装

https://pypi.tuna.tsinghua.edu.cn/simple/ # 清华大学 https://mirrors.aliyun.com/pypi/simple/ # 阿里云 https://pypi.douban.com/simple/ # 豆瓣 https://pypi.mirrors.ustc.edu.cn/simple/ # 中国科学技术大学 https://pypi.hustunique.com/ # 华中科技大学 代码…

String... 参数定义中有三个点的意思

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 有一个方法&#xff1a; protected void addMessage(String... messages) { ... } String... 是指参数的长度是可以变化的&#xff0…