使用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

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南

本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。

weixin_33686714的博客 700

【Macbook-Latex安装部署教程】【Win-Texlive镜像下载】【简单易上手】MacTex+Vscode/Texstudio

该教程记录自己在mac()上安装部署Latex环境的经验,整个教程操作简单,配置要求少,易上手。教程分成三部分:Mactex下载与安装,Vscode插件下载与配置文件修改,Texstudio安装。

sunriseOvO的博客 2568

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

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

weixin_34417183的博客 579

关于MOS管栅极和栅介质(氧化物)的材料选择

大概解释了高K材料作为栅介质的好处,以及为什么会带来好处,同时引出了金属栅的优点,总结了使用高K材料和金属栅的原因。

qq_52054477的博客 1万+

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

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

weixin_30345577的博客 355

别再折腾Windows了!Ubuntu 22.04下USRP X310 + RFNoC + Vivado 2021.1开发环境保姆级搭建指南

本文提供Ubuntu 22.04下USRP X310 + RFNoC + Vivado 2021.1开发环境的详细搭建指南,涵盖系统优化、UHD驱动编译、Vivado配置及硬件验证等关键步骤,帮助射频工程师高效构建稳定的开发环境,显著提升FPGA开发效率。

weixin_29168675的博客 255

STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码)

本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。

weixin_29281941的博客 188

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

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

echo99的专栏 476

Amesim与Simulink联合仿真:S-Function接口配置与实战避坑指南

本文详细介绍了Amesim与Simulink联合仿真中S-Function接口的配置方法与实战避坑指南。从环境搭建、编译器配置到S-Function接口实战,逐步解析关键步骤与常见问题解决方案,帮助工程师高效实现多领域系统仿真,特别适合汽车、航空航天等复杂系统建模场景。

weixin_29173777的博客 344

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

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

gitblog_00699的博客 963

STM32实战开发(76):STM32开发无线传感器网络(WSN)完整实现

本文介绍了如何基于STM32开发无线传感器网络,包括硬件选择、通信协议、系统设计和编程实现。通过STM32的强大性能和低功耗特性,我们能够构建高效、可靠的无线传感器网络。无论是Zigbee、LoRa、Wi-Fi还是BLE协议,STM32都能够与多种通信模块进行兼容,满足不同应用的需求。希望这篇文章能帮助您了解无线传感器网络的构建流程,并为您的项目提供有价值的参考。

2201_76125393的博客 1058

【Flutter 问题系列第 85 篇】Xcode 运行 Flutter 提示 The Dart VM Service was not discovered after 60 seconds.

在 Xcode 上运行 Flutter 时提示 `The Dart VM Service was not discovered after 60 seconds. This is taking much longer than expected...`,意思是 `60秒后未发现Dart虚拟机服务。这比预期的要长得多`

“Allen Su”的博客 2236
上一篇: 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、付费专栏及课程。

余额充值