【闲话】Vscode+PlatformIO+esp-idf+esp32物联网开发小记之环境搭建
Vscode作为一款优秀的代码编辑器,具有极为方便快捷的代码辅助与拓展功能,使用熟练后开发效率大大提高,且作为典型的IDE,不需要花费大量的时间成本即可上手,Vscode结合各种插件,可以搭建出大部分的开发环境,在嵌入式领域,Vscode也是一大神器,本人曾尝试从交叉编译工具开始搭建STM32的IDE,在Ubuntu上实践成功,编译速度相比keil成倍提升,缺点是需要自己写makefile,这就导致一些特殊的lib不好引入,实为一大遗憾,且由于某些尚未解决的问题,没能搞定OpenOCD,用CubeMX+Vscode+CubeProgrammer,勉强搭了一个半残废的环境,胜在稳定,搭建的方法也是网上东拼西凑找的,有时间做个总结。换到Windows,原先的方法反而行不通了,也罢,Ubuntu没有其他可选,Windows还不大把?尽管如此,Vscode的方便还是驱动着我找到了这个强大的插件——PlatformIO,选择它的一大理由,就是它的支持更新速度,对于主流的芯片,能很快适配,经测试,STM32整体开发非常流畅,可以说相当不错。
但,这不是今天我要讲的,今天要讲的Vscode+PlatformIO+esp-idf+esp32的环境搭建,其实也相当简单,在PlatformIO上新建工程,选择esp32的broad,framework选的esp-idf,经过漫长的第一次创建的配置,把测试代码拷到main里,build,upload,一气呵成。。。才怪,中间的坑多的很。。。首先测试代码是乐鑫开源的,这就要吐槽下乐鑫的用户支持,代码开源在GitHub上,众所周知,GitHub是时而存在,时而不存在的网站,我们称之为薛定谔的GitHub,把代码开源在一个不存在的网站,这不是存心不让用户下载吗(怒),好在Gitee有人搬运,嗯,忍了。除了PaltformIO外,乐鑫还推出了自己的Vscode插件,称为Espressif IDF,说实话,IDF这个名字起的不错,让人联想到某先进三代机,题外话,Espressif IDF的安装依赖esp-idf tools,乐鑫的开源下载工具,然后下载源是GitHub,经历了漫长的龟速下载以后,宣告失败,不知道是我的问题还是本身支持一般,当然还有一个办法是解决GitHub的网速问题,具体就不展开了。
还好,我们有PlatformIO,把测试代码拷到main里,build,upload,一气呵成。。。并没有,我这的话出现最大的问题是upload的时候串口有问题,当然这是我电脑驱动的问题,花费了很多时间排查出来了,先说解决方法,去官网下驱动,进设备管理器查看CP210x的驱动分配到COM号,比如是COM3,然后你发现upload后返回错误serial.serialutil.serialexception: could not open port 'com3',把驱动卸载了,重装,直到COM号不是COM3,比如COM8,再试一次就可以了,这是估计我电脑过去乱连蓝牙模块导致的,抛开其他问题不谈,esp32的环境可选的有很多,还是不错的,把这一切搞定,就可以愉快地开发esp32了
后话:Arduino的framework真香
【闲话】Vscode+PlatformIO+esp-idf+esp32物联网开发小记之环境搭建的更多相关文章
- 使用Kotlin开发Android应用 - 环境搭建 (1)
一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...
- Tiny4412 开发板 编译环境搭建【转】
本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...
- IoT设备程序开发及编译环境搭建初体验
引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...
- 基于GBT28181:SIP协议组件开发-----------第一篇环境搭建
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3930018.html,qq:1269122125. SIP协议在安 ...
- 1 IDEA 安装 及 IDEA开发 spring的环境搭建
摘要: 主要讲解使用 IDEA 开发 Spring MVC 的环境搭建,Maven的简单教学. 参考1:https://my.oschina.net/gaussik/blog/385697 参考2:h ...
- Android NDK开发之从环境搭建到Demo级十步流
写在正文之前: 几个月没有更新博客,感觉有点生疏了,所以说不能断,一断人就懒. 其实这几个月也并不是什么事也没有做,俺可是时刻想着今年的任务呢,10本书,30篇博文...,这几个月间断性的也是在学习中 ...
- UI5-学习篇-1-Eclipse开发工具及环境搭建
最近研究SAP-UI5好几个月了,将相关学习经历及问题点做个记录. 1.先了解学习资料相关站点 SAP官网:https://www.sap.com/china/index.html SAP开发工具:h ...
- webapp开发学习---Cordova环境搭建
Cordova 使用HTML, CSS & JS进行移动App开发;多平台共用一套代码;免费开源 步骤:(来自Cordova官网) 1.安装Cordova(在node.js环境下进行安装) 命 ...
- 前端开发 Vue -1windows环境搭建Vue Node开发环境
解决几个疑问: 想学习下vue.js,我理解的它是一个前端的框架,主要作用是对数据的处理,和juqery类似,所以不太理解为什么要在nodejs中npm install vue呢?在html文件中引入 ...
- JavaSE 学习笔记01丨开发前言与环境搭建、基础语法
本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8 ...
随机推荐
- 文盘Rust -- rust 连接云上数仓 starwift
作者:京东云 贾世闻 最近想看看 rust 如何集成 clickhouse,又犯了好吃懒做的心理(不想自己建环境),刚好京东云发布了兼容ck 的云原生数仓 Starwfit,于是搞了个实例折腾一番. ...
- C-03\浮点数转换与编码和补码
工程生成文件格式了解(常用) 工具 文件 作用 vc++6.0 .dsw 最高级别的配置文件,记录了整个工作空间的配置信息,是一个纯文本的文件,创建新项目时自动生成 vc++6.0 .dsp 配置文件 ...
- axios设置全局headers
需求:每次请求的时候都设置token为headers非常不方便 axios提供配置全局headers 这里我主要使用的是加 一个token验证 Global axios defaults axios. ...
- 解决 Vue3 中路由切换到其他页面再切换回来时 Echarts 图表不显示的问题
问题复现: 正常状态下: 切换到其他页面再切换回来: 问题解决: 其实这个问题的解决方式官网写得清清楚楚,我们看看官网怎么解决的: 接下来我用代码解释下这句话(正确的做法是,在图表容器被销毁之后,调用 ...
- P13_协同工作_小程序权限管理的概念以及成员管理的两个方面
协同工作和发布 - 协同工作 了解权限管理需求 在中大型的公司里,人员的分工非常仔细:同一个小程序项目,一般会有不同岗位.不同角色的员工同时参与设计与开发. 此时出于管理需要,我们迫切需要对不同岗位. ...
- CodeSmith 简单使用和常用模板
1.简介 CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET的语法来生成任意类型的代码或文本. 2.软件布局 整体布局和visual studio系列相似,用过VS开发对此 ...
- Mybatis Plus (特性、快速入门、日志、CRUD)
Mybatis plus 可以节省很多的工作,所有的CRUD JPA yk-mapper Mybatis plus 偷懒的 简介: MyBatis-Plus(opens new window)(简称 ...
- element plus + vue3表单第一次数据未清空的bug问题解决
使用框架:element Plus + vue3 场景描述: 场景一: 表单的添加和修改功能,公用同一个弹框,点击修改后,点击添加表单显示的是上次修改的数据. 场景二: 点击修改,数据回显到表单,然后 ...
- LG P4717 【模板】快速莫比乌斯/沃尔什变换 (FMT/FWT)
\[C_k = \sum_{i|j=k}A_i B_j \] 这样的或卷积可以做一次 \(\text{FWT}\),把数组变为 \(\widehat{A}_i = \sum_{j\subseteq i ...
- 代码随想录算法训练营day03 | LeetCode 203/707/206
基础知识 数据结构初始化 // 链表节点定义 public class ListNode { // 结点的值 int val; // 下一个结点 ListNode next; // 节点的构造函数(无 ...