使用platformIO进行arduino,esp8266,esp32编程的性能改进和一些优化

使用PlatformIo 开发 合宙ESP32-C3 使用框架:ArduinoESP32-C3是乐鑫推出的一款处理器,主要是替换下市场上老旧的ESP8266, MCU采用 RSIC-V架构, 主频160MHZ,提供内置Flash和外挂Flash 两个版本。 这个开发版所使用的是必须外挂Flash的型号。方法一:板子选择:esp32-c3-devkitm-1在PlatformIo.ini中修改flash_mode方法二:(1)在用户目录中找到 .platformio\platforms\espressif32\boards 目录(2)新建一个名字为 esp32- 阅读详情
AI摘要

文章讲述了如何在PlatformIO中使用多环境配置来适应不同硬件平台,同时强调了性能优化的重要性,特别是通过build_cache_dir启用缓存功能显著减少编译时间,提升开发效率。

目录

多环境配置

性能优化


多环境配置

平常的一些platformio的配置是这样的:

[env:esp32dev]
platform = espressif32
board = nodemcu-32s
framework = arduino
monitor_speed = 115200
upload_speed = 921600
lib_deps = 
	; painlessmesh/painlessMesh@^1.5.0
	bodmer/TFT_eSPI@^2.5.43
	moononournation/GFX Library for Arduino@^1.4.6
	; lorol/LittleFS_esp32@^1.0.6
board_build.filesystem = littlefs

build_flags = 
    -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_VERBOSE
    -D CONFIG_ARDUHAL_LOG_COLORS=1

但是事实上,platformio.ini是支持多配置的:



[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
framework = arduino
monitor_speed = 115200
upload_speed = 921600
board_build.filesystem = littlefs
build_flags = 
	-D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_VERBOSE
	-D CONFIG_ARDUHAL_LOG_COLORS=1
lib_deps = 
	bodmer/TFT_eSPI@^2.5.43
	moononournation/GFX Library for Arduino@^1.4.6

build_type=debug

[env:esp32dev]
platform = espressif32
board = nodemcu-32s
framework = arduino
monitor_speed = 115200
upload_speed = 921600
lib_deps = 
	; painlessmesh/painlessMesh@^1.5.0
	bodmer/TFT_eSPI@^2.5.43
	moononournation/GFX Library for Arduino@^1.4.6
	; lorol/LittleFS_esp32@^1.0.6
board_build.filesystem = littlefs

build_flags = 
    -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_VERBOSE
    -D CONFIG_ARDUHAL_LOG_COLORS=1


build_type=debug 

多配置的意义是方便随时切换不同的硬件,不用再修改配置参数,而且如果你要上传代码到硬件的时候,系统会自动判断和选择:

A fatal error occurred: This chip is ESP32 not ESP8266. Wrong --chip argument?

A fatal error occurred: This chip is ESP8266 not ESP32. Wrong --chip argument?

不是对应型号的单片机会对应报错。

多配置会导致platformio编译两份代码,产生性能损耗,但是这少了一些其他工作,如果你的电脑足够快可能可以接受,看你怎么选择。

以前不知道支持多配置,每次都只保留一个,切换起来实在不方便。

platformio的官方还有一些公共模块配置的方案,个人感觉太复杂不推荐。

性能优化

release编译耗时

debug编译耗时

对platformio.ini的修改后重新编译项目的时候,基本上就是所有项目代码的重新编译,非常耗时,很长;但是platformio.ini是可以开启缓存的:

[platformio]

build_cache_dir =   cache

上面这个cache表示一个存放缓存的目录,当然你可以任意指定名称,但是目录最好放在项目内。

这个配置的说明在 : build_cache_dir — PlatformIO latest documentation

开启缓存后,除了第一次需要耗时很长,后续不论你怎么修改platformio.ini都是非常短的时候了:

如果你使用tft_espi,修改了user_setup.h文件,整个项目会完全编译,但是这个cache开启后就是只编译一个文件,项目整体编译的非常快。

一句话,以前可能会完全编译的时候,现在基本都是只编译局部文件了,速度大提升,这个配置很重要不知道为啥不是默认配置。

如下图所示,没有修改过的文件,统统调用了cache。

快速入门ESP32—— platformIO添加开源库和自己的开发库 很多人刚开始接触到platformIO的时候,可以还不知道怎么去利用好网上开源的库用到自己的工程上,还有就是不知道怎么添加自己的.h文件,按照之前stm32的思路是行不通的。本篇文章记录了笔者自己踩过的一些坑,希望对大家有所帮助。 阅读详情

相关推荐

使用VSCode+PlatformIO搭建ESP32开发环境

PlatformIO 是一个用于物联网开发的开源生态系统。它提供跨平台的开发环境和统一的调试器,还支持远程单元测试和固件更新,曾经获得过IOT最佳开发软件和工具奖,支持1000+以上的开发板以及50多个开发平台,还有12000+的库,让开发人员不必要浪费时间在环境搭建上,可以更多时间的去写自己的逻辑,配合VScode的文件管理以及友好的界面,简直是嵌入式界的开发神器!

zhishunet 3567

PlatformIO开发之STM32点灯(基于arduino框架)

前段时间,看一些开源项目时,发现是基于PlatformIO IDE编写的,然后去查了下这个IDE,功能性还是挺强大的,不过国内好像是没找到特别详细的一个教程。为此试下毒。 PlatformIO 官方手册 1.PlatformIO 介绍 PlatformIO 是一个跨平台、跨架构、多框架、专业的 嵌入式系统工程师和编写应用程序的软件开发人员的工具 用于嵌入式产品。 PlatformIO IDE 是下一代物联网集成开发环境。 跨平台构建系统,没有对操作系统软件的外部依赖: 800+ 板 35+ 开发平台 2

尘缘里的记忆的博客 1万+

ESPAsyncWebServer库安装避坑指南:从Arduino IDE到PlatformIO,一次搞定ESP32和ESP8266依赖

本文详细介绍了ESPAsyncWebServer库在Arduino IDE和PlatformIO环境下的完整安装与配置指南,特别针对ESP32和ESP8266开发板。从基础准备到高级调试,提供了一系列避坑技巧和实战示例,帮助开发者快速搭建高效的异步Web服务器,优化物联网设备开发流程。

weixin_30258901的博客 653

VSCode -PlatformIO简介及其基本操作

PlatformIO是一个开源的跨平台的物联网(IoT)开发平台,用于嵌入式系统和物联网设备的开发。它提供了一个统一的开发环境和工具链,支持多种硬件平台(如 Arduino、ESP8266、ESP32、Raspberry Pi 等)和开发框架(如 Arduino 框架、ESP-IDF、STM32Cube等),使开发者可以更轻松地进行嵌入式开发。跨平台支持可以在 Windows、Mac 和 Linux 等操作系统上运行,并支持多种开发板和处理器架构。统一的开发环境。

weixin_67241135的博客 7456

VSCode+PlatformIO搭建ESP8266开发环境:从Arduino IDE到专业物联网开发

在嵌入式开发领域,集成开发环境(IDE)和构建系统是提升开发效率的核心工具。传统Arduino IDE虽然易于上手,但在代码管理、库依赖和项目结构方面存在局限。PlatformIO作为跨平台的嵌入式开发生态系统,通过统一的包管理和构建工具链,解决了多平台开发的一致性问题。其技术价值在于将现代软件开发流程引入嵌入式领域,支持代码自动补全、版本控制和持续集成。在物联网(IoT)和智能硬件场景中,ESP8266因其Wi-Fi功能和低成本成为热门选择。结合VSCode编辑器与PlatformIO插件,开发者可以快速

weixin_33787529的博客 345

ESP32/ESP8266固件烧录全攻略:从积木编程到AI辅助开发

在嵌入式开发领域,固件烧录是将程序代码写入微控制器芯片的关键步骤,它决定了硬件设备的功能与行为。其核心原理是通过串口通信协议,将编译后的二进制文件传输至芯片的闪存中。这项技术对于物联网设备开发至关重要,能实现设备的智能化控制与联网功能。在ESP32/ESP8266这类热门物联网开发板上,固件烧录是连接软件逻辑与硬件执行的核心桥梁。常见的应用场景包括智能家居控制、传感器数据采集和远程设备管理。本文聚焦于ESP开发中的固件烧录实践,详细解析了如何利用积木编程降低硬件操作门槛,并探讨如何借助AI编程助手提升代码编

weixin_34072637的博客 300

VSCode+PlatformIO搭建Arduino开发环境:从安装到ESP32进阶

嵌入式开发中,开发环境的选择直接决定项目效率。传统Arduino IDE虽上手简单,但在代码补全、库版本管理和多平台支持上逐渐成为瓶颈。VSCode结合PlatformIO插件,将编译器、工具链、库依赖和串口调试整合到统一界面,支持Arduino、ESP32、STM32等数百种开发板。通过platformio.ini即可管理开发板配置、依赖库和编译参数,实现工程化、可复现的构建流程,尤其适合智能小车、ROS2机器人等复杂项目。本文从零介绍VSCode安装、PlatformIO配置、库管理、ESP32扩展及高

weixin_34007020的博客 416

ESP32开发环境搭建:VSCode+PlatformIO从入门到编译优化

嵌入式开发中,开发环境配置往往决定项目启动效率。ESP32 等开发板依赖工具链、框架与库管理,传统 Arduino IDE 全局库模式容易引发版本冲突和多板卡切换成本。PlatformIO 以声明式构建系统和工程级依赖隔离为核心,通过 platformio.ini 统一管理板卡、框架、编译参数与库版本,并与 VSCode 编辑器深度集成,实现编译、烧录和串口监视器的一体化流程。其技术价值在于可复现构建、跨平台工具链自动拉取和增量编译优化,适合物联网传感器节点、多硬件版本固件以及团队协作开发。围绕 VSCod

weixin_34167819的博客 367

Arduino IDE 和 PlatformIO IDE的区别

Arduino IDE 和 PlatformIO IDE 都是用于开发和上传代码到微控制器(如 Arduino、ESP32、STM32 等)的集成开发环境(IDE)。它们各自有不同的特点和优势,适用于不同的开发需求。Arduino IDE:适合初学者和Arduino平台开发者,界面简单,易于上手,适用于快速原型开发。它是Arduino的官方IDE,最适合Arduino硬件和项目。PlatformIO IDE:适合有一定开发经验的用户,支持多个平台和框架,提供更多的功能和灵活性。

qq_57116459的博客 3709

别再只会用Arduino了!用ESP8266和PlatformIO搭建你的第一个物联网项目(附完整代码)

本文详细介绍了如何利用ESP8266和PlatformIO构建高可维护性的物联网项目,对比了PlatformIO与Arduino IDE的核心差异,提供了从环境搭建到数据上报的完整指南。通过实战案例和优化技巧,帮助开发者提升开发效率和项目稳定性,特别适合物联网和嵌入式开发爱好者。

weixin_30825581的博客 464

ESP32S3+VSCode+PlatformIO+FreeRTOS多核编程实战:基于Arduino框架的高效任务调度

本文详细介绍了如何在ESP32S3开发板上,利用VSCode、PlatformIO和Arduino框架进行FreeRTOS多核编程实战。通过搭建高效开发环境、解析核心概念、创建多核任务示例,并深入讲解任务通信与资源管理,帮助开发者掌握基于FreeRTOS的高效任务调度技术,以充分发挥ESP32S3双核处理器的性能,适用于物联网、智能家居等复杂应用场景。

q5r6s7的博客 783

ESP32与ESP8266:为何选择Arduino IDE?深入对比与其他开发环境的优劣

本文深入对比了Arduino IDE与PlatformIO、ESP-IDF等开发环境在ESP32和ESP8266开发中的优劣。Arduino IDE凭借极简的上手体验、丰富的库生态系统和跨平台兼容性,成为快速原型开发和教育训练的首选,特别适合中小型物联网项目。

tgb34567890的博客 845

ESP8266(ESP模块)Arduino离线库文件安装与网络环境优化指南

本文详细介绍了ESP8266(ESP模块)在Arduino开发环境中的离线库文件安装方法及网络环境优化技巧。针对网络依赖性强、安装失败率高的问题,提供了完整的离线安装流程和资源获取方案,帮助开发者在校园网、企业内网等特殊环境下快速搭建稳定的开发环境。

weixin_33871366的博客 492

ESP32 PlatformIO 工程化开发环境搭建与配置实战

在嵌入式与物联网开发中,ESP32 凭借低成本、Wi-Fi/蓝牙集成成为热门选择,但开发环境配置常成为项目推进的瓶颈。传统 Arduino IDE 适合单文件快速验证,却在多传感器、多源文件、多板型维护时面临库版本全局冲突、编译参数隐式、协作复现困难等问题。PlatformIO 以文本化配置为核心,将工具链、依赖库、烧录参数沉淀到 platformio.ini,实现工程级依赖隔离与多环境切换,提升可复现性与团队协作效率。其应用覆盖传感器采集、MQTT 上云、OTA 升级等场景。围绕 ESP32 从 Ardu

weixin_33859231的博客 713

计算机图形学入门30:动画与模拟介绍

计算机图形学入门,动画与模拟,物理模拟,质点弹簧系统,运动学,粒子系统,动作捕捉。

YanisWu的博客 1485

对比实验系列:Efficientdet环境配置及训练个人数据集

可以通过下方链接下载Efficientdet源码。

Yayisheng的博客 4585

Arduino IDE搭建ESP32/ESP8266开发环境全指南

Arduino IDE作为嵌入式开发的入门级集成环境,其核心价值在于将代码编译、烧录与硬件交互封装为可复用流程;其底层依赖编译工具链(如xtensa-esp32-elf-gcc)、串口驱动(如CH340/CP2102)及esptool.py烧录协议协同工作。技术本质是软硬协同:IDE调度编译与下载,芯片启动模式(如GPIO0拉低触发下载)决定物理层连通性,而离线安装包则保障网络受限场景下的环境一致性与可复现性。典型应用场景包括物联网终端开发、工业数据采集(如ESP32+LAN8720以太网方案)及低功耗传感

weixin_34417183的博客 579

【HCIE】FRR+BFD+OSPF与BGP联动

FRR+BFD+OSPF与BGP联动

Wenrs的博客 1996

告别环境搭建烦恼:VSCode+PlatformIO一站式搞定ESP32/ESP8266开发

本文详细介绍了如何使用VSCode+PlatformIO一站式开发ESP32/ESP8266,解决传统Arduino IDE的痛点。从环境搭建、基础GPIO控制到第三方库管理和项目配置进阶技巧,帮助开发者高效完成嵌入式开发任务,特别适合物联网项目实践。

weixin_30345577的博客 355

Doris StreamLoad任务报错Connection reset

背景 Spark程序扫一张Hive表(大小3-7G),然后用http协议的streamLoad任务提交给Doris集群,在Doris集群从0.13.15升级到0.14.12后spark程序报错streamLoad时突然会Connection reset 分析 enable_http_server_v2 这个参数可以参考FE中文配置中查看到,作用是对于Doris界面是否开启新风格的界面,但是实际上他的作用远不止如此,请接着看 新老版本对于enable_http_server_v2参数默认值是不同的 在0.13

gaofeng的博客 3307

华为Atlas 300I推理卡驱动安装避坑指南:不同安装方式的选择与优化

本文详细解析华为Atlas 300I推理卡驱动安装的三种主流方式(.run、.rpm和源码编译),提供关键环境检查步骤、安装流程优化建议及常见问题解决方案,帮助开发者高效完成芯片推理卡部署并规避典型安装陷阱。

q9w8e7r6t5的博客 431

从零到一:ESP32/ESP8266开发环境搭建的避坑指南与效率优化

本文详细介绍了ESP32和ESP8266开发环境搭建的完整流程,重点解析了Arduino IDE的配置优化、硬件支持包的高效安装策略及常见问题解决方案。通过国内镜像源和离线安装方法,有效解决网络下载缓慢问题,并提供驱动安装、编译错误和上传失败等典型问题的专业解决方法,帮助开发者快速构建稳定高效的物联网开发环境。

echo99的专栏 476

我用 Python 监听了自己的键盘,生成击键热力图,看看每天到底在“摸鱼”还是“搬砖”?

数据采集(监听)、持久化(I/O)与可视化展示,必须是三个完全独立的模块,这符合单一职责原则。在多线程读写 Python 字典时,锁住的时间要尽可能短,防止 I/O 线程把高频的监听线程阻塞住。这类涉及底层的代码与“键盘记录木马”只有一线之隔。永远不要把击键记录通过网络上传,所有数据必须localhost消化。人脑对枯燥的 JSON 日志是不敏感的,但对颜色和空间极其敏感。这也是为什么 Prometheus + Grafana 是标配。使用ctypes。

BUG猿的博客 193

ESP8266/ESP32红外遥控库终极使用指南

ESP8266/ESP32红外遥控库为物联网开发者提供了强大的红外信号收发能力,支持数十种主流家电品牌协议,让智能家居控制变得简单高效。通过本指南,您将快速掌握如何利用该库实现红外设备的远程控制。 ## 🚀 项目速览与核心价值 IRremoteESP8266库是一个专为ESP系列芯片优化的红外通信解决方案。它基于成熟的Arduino-IRremote库进行扩展,针对ESP8266和ESP32

gitblog_00699的博客 963

【python科研数据处理】将Endnote自动搜索的所有pdf文件,全都移动指定文件夹中

将Endnote自动搜索到的全部pdf文件,全都移动指定文件夹中1 背景2 问题解决 手动反爬虫,禁止转载:原博地址 https://blog.youkuaiyun.com/lys_828/article/details/122370892(优快云博主:Be_melting) 知识梳理不易,请尊重劳动成果,文章仅发布在优快云网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息 1 背景 在进行期末考试周后,面对最后一门功课,需要提交至少80篇SCI参考文献,因此最快下载文献的方式就是通过Web of S

lys_828的博客 1826

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 8 pin ST7735 1.8寸屏不能点亮解决一例
下一篇: esp单片机下arduino_gfx不相干显示驱动优化对flash空间的占用对比
platform
博客等级 码龄26年 1117粉丝 351原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值